# 语音处理

平台在多元素整合的视频合成基础能力之外,还另外提供语音处理的相关能力,支持用户对于视频合成的语音相关内容进行预处理,提供多项能力,TTS、ASR、NLP、多音字、音色迁移等,此外提供USSML(Unified Speech Synthesis Markup Language)能力,归一化各TTS供应商的 SSML(Speech Synthesis Markup Language)语法格式。

# 能力介绍

  • TTS语音合成
    • 根据用户选择的发音人音色结合传入的文本内容将文本朗读出来,支持调节朗读声音的音调,语速和音量。需要注意所有语言的发音人都可以合成英文文本;所有语言的发音人都可以合成自己语言的文本;粤语、沪语等中文方言发音人可以合成中文文本。
  • ASR语音识别
    • 根据用户传入的音频内容进行解析,将其转写为相应的文本内容。
  • NLP自然语言理解
    • 根据用户传入的文字内容进行词义及语义分析,并进行有效的理解和拓展,进一步反馈用户预期的文本内容。
  • 多音字处理
    • 根据用户传入的文字内容进行多音字检索,反馈给用户可能出现的多音字以及对应的发音备选。
  • 音色迁移
    • 根据用户传入的音频内容以及指定的音色,将原音频内容迁移至对应的音色合成后返回结果音频。

# API说明

用户调用平台全部API服务,皆需要访问服务接入点:aigc.softsugar.com,并在请求头中加上token信息。

# TTS语言检测

# 接口描述

根据用户传入的文本内容识别所属的语言,并返回对应的language code。

# 请求地址

POST /api/voice/v1/nlp/language

# 请求参数

字段 类型 必填 描述
query String True 文本内容

# 请求样例

{
    "query": "待合成语音的文本内容xxxxxx"
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.result String 语言代码,参考标准 ISO 639-1 (opens new window). 目前支持检测:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu

# 响应样例

case1:请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status": 0,
        "result": "zh"
    }
}

# TTS语言校验(Qid)

# 接口描述

根据用户传入的文本内容以及语言、QID,判断各元素之间是否匹配,并返回检测结果的language code。

# 请求地址

POST /api/voice/v3/tts/validate

# 请求参数

字段 类型 必填 描述
query String True 文本内容
qid String True 音色-Qid
ssml Boolean False 是否使用SSML,默认为否

# 请求样例

{
    "query": "待合成语音的文本内容xxxxxx",
    "qid": "AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK"
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.result String 校验结果
data.result.valid Boolean 是否匹配
data.result.language String 检测到的语言代码,参考标准 ISO 639-1 (opens new window). 目前支持检测:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu

# 响应样例

case1:请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status": 0,
        "result": {
            "valid": true,
            "language": "zh"
        }
    }
}

# TTS语言校验(旧)

注:该接口目前处理维护状态,不在更新新功能。建议使用Qid接口。

# 接口描述

根据用户传入的文本内容以及语言、音色、供应商ID,判断各元素之间是否匹配,并返回检测结果的language code。

# 请求地址

POST /api/voice/v1/tts/validate

# 请求参数

字段 类型 必填 描述
query String True 文本内容
voice_id String True 音色ID
language String True 语言,支持 BCP47 (opens new window).格式,如 "en-US"、"zh-CN"
vendor_id Integer True 供应商ID
ssml Boolean False 是否使用SSML

# 请求样例

{
     "query": "待合成语音的文本内容xxxxxx",
    "voice_id": "xiaoling",
    "language": "zh-CN",
    "vendor_id": 3
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.result String 校验结果
data.result.valid Boolean 是否匹配
data.result.language String 检测到的语言代码,参考标准 ISO 639-1 (opens new window). 目前支持检测:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu

# 响应样例

case1:请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status": 0,
        "result": {
            "valid": true,
            "language": "zh"
        }
    }
}

# Voice ID 迁移至 QID

# 接口描述

主动迁移已有的 Voice ID 表示的旧音色至 Qid 表示的新音色,并返回对应的 Qid 取值,建议对 Qid 进行存储,用于后续推理请求。

# 请求地址

POST /api/voice/v3/tts/migrate

# 请求参数

字段 类型 必填 描述
voice_id String True 需要进行转换的音色id

# 请求样例

{
  "voice_id": "xiaoning"
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.result String Qid,表示预配置 Qid。此字段的长度较长,建议以 VARCHAR(512) 类型进行存储

# 响应样例

{
  "code": 0,
  "message": "ok",
  "data": {
    "status": 0,
    "result": "JQb7Qv:AEA_Z10Mqp9GYwDGdLzMvPzEzIqwo"
  }
}

# QID详情接口

# 接口描述

获取QID的详细信息,获取该音色支持调节的参数细节。

# 请求地址

GET /api/voice/v3/tts/qid/{qid}

# 请求参数

字段 类型 必填 描述
qid String True 待请求详细情况的QID

# 请求样例

  https://domain/api/voice/v3/tts/qid/mwvA2f:AEBEvMy850Y_Z10Mqp9GUwTMr8xMyI3Tzk3Q

# 响应元素

字段 类型 说明
code int code 码
message string 状态说明
data object 结果数据
 -status int 状态,见状态表
 -result object QID 详情
  -pitch boolean 是否支持调节音调
  -speed boolean 是否支持调节语速
  -volume boolean 是否支持调节音量
  -phone boolean 是否支持返回音素
  -subtitle boolean 是否支持返回字幕、句级别时间戳、字级别时间戳
  -ussml object 是否支持使用 USSML 语法
   -break boolean USSML 停顿是否生效,即是否支持 <break> 标签
   -phoneme string list USSML 指定读音是否生效,即是否支持 <phoneme> 标签。<pinyin><ipa>两种标签
   -sub boolean USSML 替换文本是否生效,即是否支持 <sub> 标签
   -sayas string list USSML 指定朗读方式是否生效,即是否支持 <say-as> 标签。<cardinal><digit><phone><address><date><clock>六种标签
  -languages string list 支持的语言列表

# 响应样例

{
  "code": 0,
  "message": "ok",
  "data": {
    "status": 0,
    "result": {
      "pitch": true,
      "speed": true,
      "volume": true,
      "phone": true,
      "subtitle": true,
      "ussml": {
        "break": true,
        "phoneme": ["pinyin"],
        "sub": true,
        "sayas": ["cardinal", "digit", "phone", "address", "date", "clock"]
      },
      "languages": [
        "zh-CN",
        "en-US"
      ]
    }
  }
}

# 发起TTS请求(Qid)

# 接口描述

根据用户选择的发音人音色结合传入的文本内容将文本朗读出来,支持调节朗读声音的音调,语速和音量。

# 请求地址

POST /api/voice/v3/tts/request

# 请求参数

字段 类型 必填 描述
qid String True 发音人Qid
query String True 待合成语音的文本内容
ssml Boolean False 是否使用USSML
phoneme Boolean False 是否需要返回音素文件URL
timeout Integer False 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回TTS结果,否则返回 request_id
pitch_offset Float False 语调,数值越大越尖锐,越低越低沉,支持范围 [-60, 60];默认0
speed_ratio Float False 语速,数值越大语速越慢,支持范围 [0.5, 2];默认1.0
volume Integer False 音量,数值越大声音越大,支持范围 [1, 400];默认100
subtitle_max_length Integer False 每行字幕最大长度,默认为0,即不限制长度
subtitle_cut_by_punc Boolean False 是否根据标点符号对字幕进行切分换行,默认为false,即不切分
word_time Boolean False 是否返回字级别时间戳,默认为false,即不返回

# 请求样例

{
    "qid": "AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK",
    "query": "待合成语音的文本内容xxxxxx",
    "phoneme": true,
    "timeout": 3000,
    "word_time": true,
    "pitch_offset": 0.0,
    "speed_ratio": 1.0,
    "volume": 100
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object TTS合成结果,如在超时时间内返回,返回此字段否则此字段为空{}
data.result.audio_url String TTS合成音频MP3文件URL
data.result.srt_url String TTS音频字幕SRT文件URL
data.result.phone_url String TTS音频音素文件URL
data.result.duration_ms Integer TTS合成音频MP3文件音频时长,单位为 ms
data.result.word_times List TTS音频字文件字级别时间戳 ,单位为 ms
data.result.word_times.begin_ms Integer TTS音频文件字开始时间戳,单位为 ms
data.result.word_times.end_ms Integer TTS音频文件字结束时间戳,单位为 ms
data.result.word_times.text String TTS音频文件字文本内容

# 响应样例

case1:请求超时

{
    "code": 0,
    "message": "created",
    "data": {
       "status":1000,
       "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
       "result": {}
    }
}

case2:请求未超时,请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {
            "audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
            "srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
            "phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
            "duration_ms": 1000,
            "word_times": [
        {
          "begin_ms": 2080,
          "end_ms": 2560,
          "text": "字"
        },
        {
          "begin_ms": 2560,
          "end_ms": 3040,
          "text": "级"
        },
        {
          "begin_ms": 3040,
          "end_ms": 3520,
          "text": "别"
        },
        {
          "begin_ms": 3520,
          "end_ms": 4000,
          "text": "时"
        },
        {
          "begin_ms": 4000,
          "end_ms": 4480,
          "text": "间"
        },
        {
          "begin_ms": 4480,
          "end_ms": 4960,
          "text": "戳"
        }  ]
       }
    }
}

# 发起TTS请求(旧)

注:该接口目前处理维护状态,不在更新新功能。建议使用Qid接口。

# 接口描述

根据用户选择的发音人音色结合传入的文本内容将文本朗读出来,支持调节朗读声音的音调,语速和音量。需要注意所有语言的发音人都可以合成英文文本;所有语言的发音人都可以合成自己语言的文本;粤语、沪语等中文方言发音人可以合成中文文本。

# 请求地址

POST /api/voice/v1/request/tts

# 请求参数

字段 类型 必填 描述
voice_id String True 发音人ID
language String False 语言
query String True 待合成语音的文本内容
ssml Boolean False 是否使用SSML
phoneme Boolean False 是否需要返回音素文件URL
timeout Integer False 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回TTS结果,否则返回 request_id
pitch_offset Float False 语调,数值越大越尖锐,越低越低沉,支持范围 [-60, 60];默认0
speed_ratio Float False 语速,数值越大语速越慢,支持范围 [0.5, 2];默认1.0
volume Integer False 音量,数值越大声音越大,支持范围 [1, 400];默认100
subtitle_max_length Integer False 每行字幕最大长度,默认为0,即不限制长度
subtitle_cut_by_punc Boolean False 是否根据标点符号对字幕进行切分换行,默认为false,即不切分
word_time Boolean False 是否返回字级别时间戳,默认为false,即不返回

# 请求样例

{
    "voice_id": "xiaoling",
    "query": "待合成语音的文本内容xxxxxx",
    "phoneme": true,
    "timeout": 3000,
    "word_time": true,
    "pitch_offset": 0.0,
    "speed_ratio": 1.0,
    "volume": 100
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object TTS合成结果,如在超时时间内返回,返回此字段否则此字段为空{}
data.result.audio_url String TTS合成音频MP3文件URL
data.result.srt_url String TTS音频字幕SRT文件URL
data.result.phone_url String TTS音频音素文件URL
data.result.duration_ms Integer TTS合成音频MP3文件音频时长,单位为 ms
data.result.word_times List TTS音频字文件字级别时间戳 ,单位为 ms
data.result.word_times.begin_ms Integer TTS音频文件字开始时间戳,单位为 ms
data.result.word_times.end_ms Integer TTS音频文件字结束时间戳,单位为 ms
data.result.word_times.text String TTS音频文件字文本内容

# 响应样例

case1:请求超时

{
    "code": 0,
    "message": "created",
    "data": {
       "status":1000,
       "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
       "result": {}
    }
}

case2:请求未超时,请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {
            "audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
            "srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
            "phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
            "duration_ms": 1000,
            "word_times": [
        {
          "begin_ms": 2080,
          "end_ms": 2560,
          "text": "字"
        },
        {
          "begin_ms": 2560,
          "end_ms": 3040,
          "text": "级"
        },
        {
          "begin_ms": 3040,
          "end_ms": 3520,
          "text": "别"
        },
        {
          "begin_ms": 3520,
          "end_ms": 4000,
          "text": "时"
        },
        {
          "begin_ms": 4000,
          "end_ms": 4480,
          "text": "间"
        },
        {
          "begin_ms": 4480,
          "end_ms": 4960,
          "text": "戳"
        }  ]
       }
    }
}

# TTS状态查询(Qid)

# 接口描述

根据输入参数返回指定TTS请求的当前状态。

# 请求地址

POST /api/voice/v3/tts/result

# 请求参数

字段 类型 必填 描述
request_id String True 请求ID

# 请求样例

{
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}

# 响应参数

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object TTS合成结果,如在超时时间内返回,返回此字段否则此字段为空{}
data.result.audio_url String TTS合成音频MP3文件URL
data.result.srt_url String TTS音频字幕SRT文件URL
data.result.phone_url String TTS音频音素文件URL
data.result.duration_ms Integer TTS合成音频MP3文件音频时长,单位为 ms
data.result.word_times List TTS音频字文件字级别时间戳 ,单位为 ms
data.result.word_times.begin_ms Integer TTS音频文件字开始时间戳,单位为 ms
data.result.word_times.end_ms Integer TTS音频文件字结束时间戳,单位为 ms
data.result.word_times.text String TTS音频文件字文本内容

# 响应样例

case1:还在处理

{
    "code": 0,
    "message": "created",
    "data": {
        "status":1000,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {}
    }
}

case2: 已处理完毕

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {
            "audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
            "srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
            "phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
            "duration_ms": 1000,
            "word_times": [
        {
          "begin_ms": 2080,
          "end_ms": 2560,
          "text": "字"
        },
        {
          "begin_ms": 2560,
          "end_ms": 3040,
          "text": "级"
        },
        {
          "begin_ms": 3040,
          "end_ms": 3520,
          "text": "别"
        },
        {
          "begin_ms": 3520,
          "end_ms": 4000,
          "text": "时"
        },
        {
          "begin_ms": 4000,
          "end_ms": 4480,
          "text": "间"
        },
        {
          "begin_ms": 4480,
          "end_ms": 4960,
          "text": "戳"
        }  ]
       }
    }
}

# TTS状态查询(旧)

注:该接口目前处理维护状态,不在更新新功能。建议使用Qid接口。

# 接口描述

根据输入参数返回指定TTS请求的当前状态。

# 请求地址

POST /api/voice/v1/result/tts

# 请求参数

字段 类型 必填 描述
request_id String True 请求ID

# 请求样例

{
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}

# 响应参数

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object TTS合成结果,如在超时时间内返回,返回此字段否则此字段为空{}
data.result.audio_url String TTS合成音频MP3文件URL
data.result.srt_url String TTS音频字幕SRT文件URL
data.result.phone_url String TTS音频音素文件URL
data.result.duration_ms Integer TTS合成音频MP3文件音频时长,单位为 ms
data.result.word_times List TTS音频字文件字级别时间戳 ,单位为 ms
data.result.word_times.begin_ms Integer TTS音频文件字开始时间戳,单位为 ms
data.result.word_times.end_ms Integer TTS音频文件字结束时间戳,单位为 ms
data.result.word_times.text String TTS音频文件字文本内容

# 响应样例

case1:还在处理

{
    "code": 0,
    "message": "created",
    "data": {
        "status":1000,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {}
    }
}

case2: 已处理完毕

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {
            "audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
            "srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
            "phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
            "duration_ms": 1000,
            "word_times": [
        {
          "begin_ms": 2080,
          "end_ms": 2560,
          "text": "字"
        },
        {
          "begin_ms": 2560,
          "end_ms": 3040,
          "text": "级"
        },
        {
          "begin_ms": 3040,
          "end_ms": 3520,
          "text": "别"
        },
        {
          "begin_ms": 3520,
          "end_ms": 4000,
          "text": "时"
        },
        {
          "begin_ms": 4000,
          "end_ms": 4480,
          "text": "间"
        },
        {
          "begin_ms": 4480,
          "end_ms": 4960,
          "text": "戳"
        }  ]
       }
    }
}

# 发起ASR请求

# 接口描述

根据用户传入的音频内容进行解析,将其转写为相应的文本内容。

# 请求地址

POST /api/voice/v1/request/asr

# 请求参数

字段 类型 必填 描述
audio_url String True 待识别文本的音频文件URL
timeout Integer False 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回ASR结果,否则返回 request_id
subtitle_max_length Integer False 每行字幕最大长度,默认为0,即不限制长度
subtitle_cut_by_punc Boolean False 是否根据标点符号对字幕进行切分换行,默认为false,即不切分
word_time Boolean False 是否返回字级别时间戳,默认为false,即不返回

# 请求样例

{
    "audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
    "timeout": 3000
}

# 响应元素

字段 类型 描述
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object ASR请求结果,如在超时时间内返回,返回此字段否则此字段为空{}
data.result.srt_url String ASR音频字幕SRT文件URL
data.result.text String ASR识别结果
data.result.word_times List ASR音频字文件字级别时间戳 ,单位为 ms
data.result.word_times.begin_ms Integer ASR音频文件字开始时间戳,单位为 ms
data.result.word_times.end_ms Integer ASR音频文件字结束时间戳,单位为 ms
data.result.word_times.text String ASR音频文件字文本内容

# 响应样例

case1:请求超时

{
    "code": 0,
    "message": "created",
    "data": {
        "status":1000,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {}
    }
}

case2:请求未超时,请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {
        "srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
        "text": "ASR识别结果",
        "word_times": [
        {
          "begin_ms": 2080,
          "end_ms": 2560,
          "text": "字"
        },
        {
          "begin_ms": 2560,
          "end_ms": 3040,
          "text": "级"
        },
        {
          "begin_ms": 3040,
          "end_ms": 3520,
          "text": "别"
        },
        {
          "begin_ms": 3520,
          "end_ms": 4000,
          "text": "时"
        },
        {
          "begin_ms": 4000,
          "end_ms": 4480,
          "text": "间"
        },
        {
          "begin_ms": 4480,
          "end_ms": 4960,
          "text": "戳"
        }  ]
        }
    }
}

# ASR状态查询

# 接口描述

根据输入参数返回指定ASR请求的当前状态。

# 请求地址

POST /api/voice/v1/result/asr

# 请求参数

字段 类型 必填 描述
request_id String True 请求ID

# 请求样例

{
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object ASR请求结果,如在超时时间内返回,返回此字段否则此字段为空{}
data.result.srt_url String ASR音频字幕SRT文件URL
data.result.text String ASR识别结果
data.result.word_times List ASR音频字文件字级别时间戳 ,单位为 ms
data.result.word_times.begin_ms Integer ASR音频文件字开始时间戳,单位为 ms
data.result.word_times.end_ms Integer ASR音频文件字结束时间戳,单位为 ms
data.result.word_times.text String ASR音频文件字文本内容

# 响应样例

case1:请求超时

{
    "code": 0,
    "message": "created",
    "data": {
        "status":1000,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {}
    }
}

case2:请求未超时,请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": {
            "srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
            "text": "ASR识别结果",
            "word_times": [
        {
          "begin_ms": 2080,
          "end_ms": 2560,
          "text": "字"
        },
        {
          "begin_ms": 2560,
          "end_ms": 3040,
          "text": "级"
        },
        {
          "begin_ms": 3040,
          "end_ms": 3520,
          "text": "别"
        },
        {
          "begin_ms": 3520,
          "end_ms": 4000,
          "text": "时"
        },
        {
          "begin_ms": 4000,
          "end_ms": 4480,
          "text": "间"
        },
        {
          "begin_ms": 4480,
          "end_ms": 4960,
          "text": "戳"
        }  ]
        }
    }
}

# 发起多音字请求

# 接口描述

根据输入参数返回文本中是否包含多音字以及多音字对应的可选择发音。

# 请求地址

POST /api/voice/v1/request/polyphony

# 请求参数

字段 类型 必填 说明
query String True 请求文本
format string false 返回格式,支持 “pinyin” 和 “bopomofo”,默认为 “pinyin”
timeout Integer False 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回多音字结果,否则返回 request_id

# 请求样例

{
    "query": "待合成语音的文本内容xxxxxx",
    "timeout": 3000
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object List 多音字请求结果,如在超时时间内返回,返回此字段,否则此字段为空{}
data.result.text String 多音字文本
data.result.polyphony String List 多音字的可选发音,推荐读音在前,候选读音在后
data.result.polyphony_assist List of String list 多音字的可选发音拼音及对应注音,推荐读音在前,候选读音在后。仅当 format 为 bopomofo 时返回

# 响应样例

case1:请求超时

{
    "code": 0,
    "message": "created",
    "data": {
       "status":1000,
       "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
       "result": []
    }
}

case2:请求未超时,请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": [
            {
                "text":"待",
                "polyphony":["dai4","dai1"]
            },
            {
                "text":"的",
                "polyphony":["de5","di4","di1","di2"]
            }
        ]
    }
}

case3:请求注音,未超时成功


{
    "code": 0,
    "data": {
        "request_id": "66d043c7-adbd-4a12-a52e-aa7c3c226a05",
        "result": [
            {
                "polyphony": [
                    "lv4",
                    "lu4"
                ],
                "polyphony_assist": [
                    ["lv4", "ㄌㄩˋ"],
                    ["lu4", "ㄌㄨˋ"]                    
                ],
                "text": "绿"
            },
            {
                "polyphony": [
                    "le5",
                    "liao3"
                ],
                "polyphony_assist": [
                    ["le5", "˙ㄌㄜ"],
                    ["liao3", "ㄌㄧㄠˇ"]
                ],
                "text": "了"
            }
        ],
        "status": 0
    },
    "message": "ok"
}

# 多音字状态查询

# 接口描述

根据输入参数返回指定多音字请求的当前状态。

# 请求地址

POST /api/voice/v1/result/polyphony

# 请求参数

字段 类型 必填 说明
request_id String True 请求ID

# 请求样例

{
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result Object List 多音字请求结果,如在超时时间内返回,返回此字段,否则此字段为空{}
data.result.text String 多音字文本
data.result.polyphony String List 多音字的可选发音,推荐读音在前,候选读音在后
data.result.polyphony_assist List of String list 多音字的可选发音拼音及对应注音,推荐读音在前,候选读音在后。仅当 format 为 bopomofo 时返回

# 响应样例

case1:还在处理

{
    "code": 0,
    "message": "created",
    "data": {
        "status":1000,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": []
    }
}

case2:处理完毕

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": [
            {
                "text":"待",
                "polyphony":["dai4","dai1"]
            },
            {
                "text":"的",
                "polyphony":["de5","di4","di1","di2"]
            }
        ]
    }
}

case3:请求注音,成功

{
    "code": 0,
    "data": {
        "request_id": "66d043c7-adbd-4a12-a52e-aa7c3c226a05",
        "result": [
            {
                "polyphony": [
                    "lv4",
                    "lu4"
                ],
                "polyphony_assist": [
                    ["lv4", "ㄌㄩˋ"],
                    ["lu4", "ㄌㄨˋ"]                    
                ],
                "text": "绿"
            },
            {
                "polyphony": [
                    "le5",
                    "liao3"
                ],
                "polyphony_assist": [
                    ["le5", "˙ㄌㄜ"],
                    ["liao3", "ㄌㄧㄠˇ"]
                ],
                "text": "了"
            }
        ],
        "status": 0
    },
    "message": "ok"
}

# 发起合成唱歌音频请求

# 接口描述

根据输入的唱歌音频,唱歌音频属性,指定的唱歌音色id,返回新的清唱的唱歌音频及背景音乐。

# 请求地址

POST /api/voice/v3/svc/request

# 请求参数

字段 类型 必填 说明
audio_url String True 原始唱歌音频url
sid String True 唱歌音色id
with_bgm Boolean False 音频文件是否包含背景音乐,如包含背景音乐,将进行声源分离,并分别返回转换后的干音与背景音乐
pitch Integer False 音高,数值越大越尖锐,越小越低沉,支持范围 [-12, 12];默认0
timeout Integer False 同步等待任务完成的时间,单位为ms。如任务在时限内完成,直接返回结果,否则返回 request_id

# 请求样例

{
    "audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
  	"sid": "sid1",
  	"with_bgm": true,
  	"pitch": 0,
  	"timeout": 0
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result String 结果音频,如任务在超时时间内完成,返回此字段,否则此字段为空{}
data.result.vocal_track_url String SVC 结果音频文件 URL
data.result.original_instrumental_track_url String 声源分离后的背景音乐文件 URL,仅当 with_bgm 为 true 时返回
data.result.original_vocal_track_url String 声源分离后的原始人声文件 URL,仅当 with_bgm 为 true 时返回
data.result.original_reverb_url String 声源分离后的混响文件 URL,仅当 with_bgm 为 true 时返回

# 响应样例

case1:请求超时

{
    "code": 0,
  	"message": "created",
  	"data": {
    "status": 1000,
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
    "result": {}
  }
}

case2:请求未超时,请求成功

{
    "code": 0,
 	"message": "ok",
  	"data": {
    "status": 0,
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
    "result": {
      "vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
      "original_instrumental_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_acc.mp3",
      "original_vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_vocal.mp3",
      "original_reverb_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_reverb.mp3"
    }
  }
}

# 合成唱歌音频状态查询

# 接口描述

根据输入参数返回指定合成唱歌音频请求的当前状态。

# 请求地址

POST /api/voice/v3/svc/result

# 请求参数

字段 类型 必填 说明
request_id String True 请求ID

# 请求样例

{
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result String 翻译请求结果,如在超时时间内返回,返回此字段,否则此字段为空{}
data.result.vocal_track_url String SVC 结果音频文件 URL
data.result.original_instrumental_track_url String 声源分离后的背景音乐文件 URL,仅当 with_bgm 为 true 时返回
data.result.original_vocal_track_url String 声源分离后的原始人声文件 URL,仅当 with_bgm 为 true 时返回
data.result.original_reverb_url String 声源分离后的混响文件 URL,仅当 with_bgm 为 true 时返回

# 响应样例

case1:还在处理

{
  "code": 0,
  "message": "created",
  "data": {
    "status": 1000,
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
    "result": {}
  }
}

case2:处理完毕

{
  "code": 0,
  "message": "ok",
  "data": {
    "status": 0,
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
    "result": {
      "vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
      "original_instrumental_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_acc.mp3",
      "original_vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_vocal.mp3",
      "original_reverb_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_reverb.mp3"
    }
  }
}

# 发起翻译请求(暂不支持)

# 接口描述

根据输入的文本以及指定的目标语言,返回翻译后的文本内容。

# 请求地址

POST /api/voice/v1/request/translate

# 请求参数

字段 类型 必填 说明
query String True 需要翻译的文本,要求在20万字符以内
to String True 输出的文本语言代码,支持语言列表见下表
timeout Integer False 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回翻译结果,否则返回 request_id

# 语言列表

语言 语言代码
阿尔巴尼亚语 sq
阿拉伯语 ar
亚美尼亚语 hy
阿塞拜疆语(拉丁语) az
保加利亚语 bg
粤语(繁体) yue
简体中文 zh-Hans
克罗地亚语 hr
捷克语 cs
丹麦语 da
荷兰语 nl
英语 en
爱沙尼亚语 et
菲律宾语 fil
芬兰语 fi
法语 fr
格鲁吉亚语 ka
德语 de
希腊语 el
希伯来语 he
匈牙利语 hu
冰岛语 is
印度尼西亚语 id
爱尔兰语 ga
意大利语 it
日语 ja
哈萨克语 kk
朝鲜语 ko
拉脱维亚语 lv
立陶宛语 lt
马来语(拉丁语系) ms
缅甸 my
尼泊尔语 ne
挪威语 nb
波斯语 fa
波兰语 pl
葡萄牙语 pt-pt
罗马尼亚语 ro
俄语 ru
斯洛伐克语 sk
斯洛文尼亚语 sl
西班牙语 es
瑞典语 sv
泰语 th
藏语 bo
土耳其语 tr
土库曼语(拉丁语) tk
乌克兰语 uk
维吾尔语(阿拉伯语) ug
乌兹别克语(拉丁文) uz
越南语 vi

# 请求样例

{
    "query": "待翻译的文本内容xxxxxx",
    "to": "en",
    "timeout": 3000
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result String 翻译请求结果,如在超时时间内返回,返回此字段,否则此字段为空{}

# 响应样例

case1:请求超时

{
    "code": 0,
    "message": "created",
    "data": {
       "status":1000,
       "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
       "result": []
    }
}

case2:请求未超时,请求成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": "The text to translate"
    }
}

# 翻译状态查询(暂不支持)

# 接口描述

根据输入参数返回指定翻译请求的当前状态。

# 请求地址

POST /api/voice/v1/result/translate

# 请求参数

字段 类型 必填 说明
request_id String True 请求ID

# 请求样例

{
    "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}

# 响应元素

字段 类型 说明
code Integer code码,见状态表
message String 状态说明
data Object 结果数据
data.status Integer 状态,见状态表
data.request_id String 请求ID
data.result String 翻译请求结果,如在超时时间内返回,返回此字段,否则此字段为空{}

# 响应样例

case1:还在处理

{
    "code": 0,
    "message": "created",
    "data": {
        "status":1000,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": ""
    }
}

case2:处理完毕

{
    "code": 0,
    "message": "ok",
    "data": {
        "status":0,
        "request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
        "result": "The text to translate"
    }
}

# 状态表

# 语言检测相关状态

# TTS语言检测请求响应状态
code 说明
0 成功
x 失败
status 说明
0 处理成功
3201 拒绝:必填参数缺失
3202 拒绝:非法的参数--请求文本为空
3301 请求失败:未能检测到语言

# 语言校验相关状态

# TTS语言校验请求响应状态
code 说明
0 成功
x 失败
status 说明
0 处理成功
1201 拒绝:必填参数缺失
1202 拒绝:非法的参数--音色ID为空
1203 拒绝:非法的参数--请求文本为空
1204 拒绝:非法的参数--语言为空
1205 拒绝:非法的参数--音色ID不存在
1206 拒绝:非法的参数--未知的语言
1207 拒绝:非法的参数--未知的供应商
1301 请求失败:未能检测到语言

# TTS相关状态

# TTS请求响应状态
code 说明
0 成功
x 失败
status 说明
0 处理成功
1000 处理中
1002 拒绝:必填参数缺失
1003 拒绝:非法的参数--发音人为空
1004 拒绝:非法的参数--合成文本为空
1005 拒绝:非法的参数--发音人不存在
1102 请求失败,未超时:未连接到服务
1103 请求失败,未超时:繁忙
1104 请求失败,未超时:内部错误
1105 请求失败,未超时:请求超时
# TTS请求查询状态
code 说明
0 成功
x 失败
status 说明
0 成功
1000 处理中
1102 失败:未连接到服务
1103 失败:繁忙
1104 失败:内部错误
1105 失败:请求超时
1106 失败:未知的request ID

# ASR相关状态

# ASR请求响应状态
code 说明
0 成功
x 失败
status 说明
0 请求成功
1000 请求超时,已创建了新请求
2001 拒绝:必填参数缺失
2002 拒绝:非法的参数--音频URL为空
2102 请求失败,未超时:未连接到服务
2103 请求失败,未超时:繁忙
2104 请求失败,未超时:内部错误
2105 请求失败,未超时:请求超时
2106 请求失败,未超时:下载音频错误
# ASR请求查询状态
code 说明
0 成功
x 失败
status 说明
0 成功
1000 处理中
2102 失败:未连接到服务
2103 失败:繁忙
2104 失败:内部错误
2105 失败:请求超时
2106 失败:下载音频错误
2107 失败:未知的request ID

# 多音字相关状态

# 多音字请求响应状态
code 说明
0 成功
x 失败
status 说明
0 处理成功
1000 处理中
5002 拒绝:必填参数缺失
5004 拒绝:非法的参数--合成文本为空
5102 请求失败,未超时:未连接到服务
5103 请求失败,未超时:繁忙
5104 请求失败,未超时:内部错误
5105 请求失败,未超时:请求超时
# 多音字请求查询状态
code 说明
0 成功
x 失败
status 说明
0 成功
1000 处理中
5102 失败:未连接到服务
5103 失败:繁忙
5104 失败:内部错误
5105 失败:请求超时
5106 失败:未知的request ID

# 翻译相关状态

# 翻译请求响应状态
code 说明
0 成功
x 失败
status 说明
0 请求成功
1000 处理中
3401 拒绝:必填参数缺失
3402 拒绝:非法的参数--请求文本为空
3403 拒绝:非法的参数--输出语言为空
3404 拒绝:非法的参数--翻译文本超过20w字
3501 请求失败,内部错误
3502 请求失败,请求超时
# 音色迁移请求响应状态
code 说明
0 成功
x 失败
status 说明
0 处理成功
1000 处理中
1401 拒绝:必填参数缺失
1402 拒绝:非法的参数--音频 URL 为空
1403 拒绝:非法的参数--vc_id 不存在
1404 拒绝:非法的参数--音频时长超过10分钟
1502 请求失败:未连接到VC服务
1503 请求失败:VC服务内部错误
1504 请求失败:请求超时
1505 请求失败:下载音频错误
1506 请求失败:音频格式错误
# 音色迁移请求查询状态
code 说明
0 成功
x 失败
status 说明
0 成功
1000 处理中
1404 拒绝:非法的参数--音频时长超过10分钟
1502 失败:未连接到VC服务
1503 失败:VC服务内部错误
1504 失败:请求超时
1505 失败:下载音频错误
1506 失败:音频格式错误
1507 失败:未知的request ID
# 翻译请求查询状态
code 说明
0 成功
x 失败
status 说明
0 成功
1000 处理中
3501 失败:内部错误
3502 失败:请求超时
3503 失败:未知的request ID

# USSML语法说明

# 介绍

USSML(Unified Speech Synthesis Markup Language)旨在提供统一的 SSML(Speech Synthesis Markup Language)语法格式。USSML支持最常用的几个SSML标签:停顿、指定读音、替换合成文本和指定朗读方式,可以满足大部分的语音合成需求。

# 使用方式

# 语法格式

USSML 语法格式如下:

<speak sttts:version="0.1">
    <break time="string" />
    <phoneme ph="string"></phoneme>
    <sub alias="string"></sub>
    <say-as interpret-as="string"></say-as>
</speak>

标签用于包裹其他子标签外,剩余标签均不可嵌套使用。

# 特殊字符

在 USSML 中,如果使用了以下的特殊字符,需要进行转义,如下表所示。对于 USSML 标记本身的相关字符,则无需转义。

补充转译的例子。

特殊字符 转义字符
& &amp;
< &lt;
> &gt;
" &quot;
' &apos;
# 标签说明
# <speak>

<speak> 标签是 USSML 的根标签,用于包裹所有的 USSML 标签。

属性 sttts:version 用于指定 USSML 的版本号,目前 USSML 的版本号为 0.1

<speak sttts:version="0.1">
    <!-- USSML 标签 -->
</speak>
# <break>

<break> 标签用于指定停顿,其 time 属性用于指定停顿的时长。time 属性的值是一个字符串,单位为秒或毫秒。停顿的最大时长为5秒。不可以传输纯数字,需要有单位。例如:

<break time="5s" />

<break time="5000ms" />
# <phoneme>

<phoneme> 标签用于指定读音,其 ph 属性用于指定读音的内容。由于不同供应商支持语言范围不同,目前 USSML 中的 <phoneme> 仅支持汉语拼音。拼音用法:字与字的拼音用空格分隔,拼音的数目必须与字数相等。每个拼音由发音和音调组成,音调为1~5的数字编号,其中”5”表示轻声。例如:

<phoneme ph="mai2 mo4">埋没</phoneme>
# 示例
<speak sttts:version="0.1">
    你说<phoneme ph="bo2"></phoneme><break time="500ms" />
    我说<phoneme ph="bao2"></phoneme></speak>
# <sub>

<sub> 标签用于在合成过程中替换字幕文本。该标签的 ‘alias’ 属性用于指定要替换的文本内容。合成时,‘alias’ 属性所包含的文本将会取代原始文本进行合成,若有字幕,字幕内容为标签内的原始文本。

<sub> 标签内容与 ‘alias’ 属性的文本均不得为空。

例如:

<sub alias="World Wide Web Consortium">W3C</sub>

以上例子中,字幕显示为:W3C,朗读内容为:World Wide Web Consortium。

# <say-as>

<say-as>标签允许您使用特定的朗读方式来合成标签内容。该标签的 ‘interpret-as’ 属性用于指定朗读方式。不同的供应商对相同的朗读方式可能产生略微不同的结果。 interpret-as 属性支持多种值,包括:

说明 样例
cardinal 按照数值方式进行发音 “1487” 读作 “一千四百八十七”
digit 按数字串发音 “12345” 读作 “一二三四五”
phone 按电话号码常用方式发音 “1301001155” 读作 “幺三零幺零零幺幺五五”
address 按地址发音 “市台路388-301号” 读作 “市台路三八八杠三零幺号”
date 按日期发音 “1998-12-12” 读作 “一九九八年十二月十二日”
clock 按时刻发音 “12:00:12” 读作 “十二点零分十二秒”
# 示例
<say-as interpret-as="cardinal">12345</say-as>

示例 1:

<speak sttts:version="0.1">
    你说<phoneme ph="bo2"></phoneme><break time="500ms" />
    我说<phoneme ph="bao2"></phoneme></speak>

示例 2:

<speak sttts:version="0.1">
    <sub alias="World Wide Web Consortium">W3C</sub>
    是一个国际性的标准化组织。
</speak>

示例 3:

<speak sttts:version="0.1">
    <sub alias="青岛啤酒">TsingTao</sub>
    用河南话说就是,
    <phoneme ph="qing2 dao1 pi4 jiu1">青岛啤酒</phoneme><say-as interpret-as="cardinal">12345</say-as>
</speak>

以上即为平台提供的语音处理能力相关内容。

最后更新: 2024/9/5 20:06:11