语音合成与文字转语音 API 接入指南

基于百度智能云语音技术官方文档,梳理语音合成、文字转语音、文本转语音、在线配音和语音朗读的接口选择、参数配置、音色选择与返回结果判断。

按文本长度与实时性选择合成接口

百度智能云语音合成能力覆盖短文本在线合成、长文本在线合成和流式文本在线合成,适用于播报、朗读、配音和边合成边播放等场景。

短文本在线合成

短文本在线合成基于 HTTP REST API,将文本转换为可播放音频文件,支持 POST 和 GET 两种方式,官方推荐使用 POST 方式请求。

长文本在线合成

短文本 API 文档说明,如需合成更长文本,推荐使用长文本在线合成,可将 10 万字以内文本一次性合成,异步返回音频,适用于阅读听书、新闻播报等场景。

流式文本在线合成

流式文本在线合成基于 WebSocket 协议,可将输入文本合成为二进制语音数据,在用户输入文本时接近同步返回合成音频,实现边合成边播放。

短文本在线合成的核心参数

短文本在线合成适合接口化生成播报音频,接入时需要重点核对文本、鉴权、用户标识、语言、音色和音频格式参数。

必填参数

官方参数表说明,短文本在线合成需要提供合成文本、Access Token、用户唯一标识、客户端类型和语言选择。

tex合成文本,长度必须小于 1024 GBK 字节,建议每次请求不超过 120 字节。
tok开放平台获取到的开发者 Access Token。
cuid用户唯一标识,用来计算 UV 值,建议填写可区分用户的机器 MAC 地址或 IMEI 码。
ctp / lanWeb 端 ctp 填写固定值 1,lan 填写固定值 zh。

效果参数

语速、音调、音量、发音人和音频格式决定语音朗读体验,可按播报、客服、教育、阅读等场景进行配置。

spd语速,取值 0-15,默认值为 5。
pit音调,取值 0-15,默认值为 5。
vol音量,基础音库取值 0-9,精品音库取值 0-15,默认值为 5。
aue音频格式,3 为 mp3,4 为 pcm,5 为 pcm-8k,6 为 wav。

音色、方言与输出格式配置

文字转语音不仅要把文本转换成音频,还需要根据业务语气、音色风格、方言和终端播放格式调整参数。

通过 per 选择发音人

短文本在线合成文档列出基础音库、精品音库、臻品音库和大模型音库的 per 参数,例如度小宇、度小美、度逍遥、度博文、度涵竹、度嫣然等发音人。

自定义音色合成

语音合成文档说明,自定义音色合成可传入训练后的 voice_id 与合成文本 text,文本总字数不超过 500 个字符,支持配置语言、方言、格式、采样率、音调、音量和语速。

方言与语言

语音合成参数说明中,lang 支持中英语 zh 和日语 ja;如需合成方言,合成语种需选择 zh,dialect 支持上海话、河南话、四川话、湖南话、贵州话等。

流式文本合成适合边生成边播放

需要更高实时性的在线配音、对话播报或交互式朗读场景,可优先查看 WebSocket 流式文本在线合成。

建立 WebSocket 连接

流式文本在线合成请求地址为 wss://aip.baidubce.com/ws/2.0/speech/publiccloudspeech/v1/tts,握手阶段通过 URL 或 Header 提供鉴权信息,并在 URL 中传入必填的 per 发音人。

access_tokenquery 参数,和 Authorization 二选一。
Authorizationheader 参数,和 access_token 二选一。
per必填,表示 tts 发音人。

发送开始帧与文本帧

握手成功后,客户端发送 system.start 开始帧,可在 payload 中配置语速、音调、音量、音频格式和采样率;随后发送 text 类型消息,单次文本不超过 1000 字。

  • spd、pit、vol 取值均为 0-15,默认值为 5。
  • aue 默认为 3,可配置 mp3、pcm、wav 等输出。
  • 正常响应会返回二进制音频数据,结束帧类型为 system.finish。

代码调用与结果判断

官方示例演示了通过 API Key 和 Secret Key 获取 token,再调用语音合成接口生成音频文件的基本流程。

准备密钥与测试额度

“如何用代码调用”文档说明,完成准备工作中的 API Key、Secret Key 和免费测试额度后,可编写示例程序调用百度 AI 开放平台语音合成能力。

获取 Access Token

示例代码通过 grant_type=client_credentials、client_id 和 client_secret 获取 token,并检查 scope 中是否包含 audio_tts_post 能力。

判断返回是否为音频

短文本在线合成文档说明,需要根据响应头 Content-Type 判断是否合成成功;成功时返回以 audio 开头的内容,错误时返回 JSON 文本,可使用 sn 排查问题。

常见问题

围绕文字转语音接口选择、文本长度、URL 编码、音频格式和流式合成整理接入前常见问题。

短文本在线合成适合多长的文本?

官方参数说明中,tex 文本长度必须小于 1024 GBK 字节,建议每次请求文本不超过 120 字节,约为 60 个汉字或字母数字;更长文本推荐使用长文本在线合成。

tex 参数为什么建议做两次 urlencode?

短文本在线合成文档说明,由于 urlencode 存在 RFC 1738 和 RFC 3986 两个标准,百度为兼容支持 1 次及 2 次 urlencode,其中 2 次 urlencode 可以覆盖全部特殊字符,因此推荐传递 tex 时做 2 次 urlencode。

文字转语音返回 JSON 是什么情况?

如果合成成功,响应 Content-Type 以 audio 开头;如果合成出现错误,则返回 JSON 文本,header 为 Content-Type: application/json,其中 sn 可用于 DEBUG 追查问题。

在线配音要边输入边播放,应该选哪个接口?

流式文本在线合成基于 WebSocket 协议,相比多次短文本合成可以获得更高实时性,能在用户输入文本时接近同步返回合成音频,适合边合成边播放场景。

推荐阅读

继续查看短文本在线合成、流式文本在线合成、语音合成参数和代码调用官方文档。

短文本在线合成 API

查看 tex、tok、cuid、ctp、lan、spd、pit、vol、per、aue 和返回说明。

流式文本在线合成

查看 WebSocket 握手、system.start、text 消息、二进制音频返回和结束帧。

语音合成

查看 voice_id、text、lang、dialect、media_type、sample_rate、pitch、volume 和 speed。

如何用代码调用

查看 Python 示例、获取 token、两次 urlencode、固定参数和音频文件保存流程。

开始接入文字转语音能力

先根据文本长度和实时性选择短文本、长文本或流式合成,再配置 token、发音人、语速、音调、音量和音频格式。