TTS功能的说明#

功能介绍#

TTS, 即文本转语音, 特指离线TTS. 对应在线调用云服务器API生成mp3的, 不在讨论范围内.

TTS在固件中分2部分:

  1. TTS功能代码, 必须编译进固件才能使用TTS功能

  2. TTS资源数据, 可编译进固件, 也可以外置到SPI Flash

因为TTS资源数据有750k字节,所以在不同类型的固件会差异

  1. AT固件, 必须是LSAT固件才支持TTS, 即低速+TTS固件,同时TTS资源数据也放在固件内

  2. CSDK固件,标准布局就能放下,一般把TTS资源数据放固件内

  3. LuatOS固件, 在V1104之前仅支持放SPI Flash, V1104开始支持放在固件内,有条件支持

API调用:

  1. 通过外置SPI Flash支持TTS的固件, 搭配sfud和audio库, 参考 demo/tts

  2. 内嵌TTS资源的固件, 使用audio固件, 也是参考 demo/tts

获取LuatOS支持TTS的固件#

  1. 云编译获取

  2. 在LuaTools的resource/ec618_lua_lod目录下, 发布V1104之后会有

  3. 从LuatOS统一发布中心获取 https://gitee.com/openLuat/LuatOS/releases

内嵌TTS资源数据的LuatOS固件的注意事项:

  1. 脚本区会缩减到64k, 且不太可能支持底层升级,但支持脚本升级

  2. 默认不支持UI库,因为放不下, 不过依然可以自行编译固件,尝试极限操作

TTS语音参数规则#

TTS语音的参数调整,是播放的字符串的特殊格式来设置的

  1. 基本格式是 [参数XXX]待播放的文本

  2. 部分参数支持不同的位置多次使用, 例如 [参数1]待播放[参数2]123文本

原始格式(选择默认参数)#

audio.tts(0, "大家好,我是小宙")

设置发音人#

​设置代码参考,发音人同时只能设置一个

--[[
 格式: [m*] (*=51~55)
 51 – 许久
 52 – 许多
 53 – 晓萍
 54 – 唐老鸭
 55 – 许宝宝 
]]
audio.tts(0, "[m52]大家好,我是小宙")

设置发音风格#

--[[
格式: [f*] (*=0/1/2)
参数: 0 – 一字一顿
      1 – 平铺直叙
      2 – 有声有色
说明: 默认为平铺直叙风格。
]]
audio.tts(0, "[f1]大家好,我是小宙")

选择语种#

--[[
格式: [g*] (*=0/1/2)
参数: 0 – 自动判断
	  1 – 汉语普通话
	  2 – 英语语种
说明:默认语种为自动判断。
]]
audio.tts(0, "[g0]大家好,我是小宙")

设置数字处理策略#

--[[
格式: [n*] (*=0/1/2)
参数: 0 – 自动判断
      1 – 数字作号码处理
      2 – 数字作数值处理
说明: 默认为自动判断。
]]
audio.tts(0, "[n1]大家好12312121212")

英文数字 0 的朗读设置#

--[[
格式: [o*] (*=0/1)
参数: 0 – 英文数字 0 读做“O”
	  1 – 英文数字 0 读做“zero”
说明: 默认为英文数字 0 读做“zero”。
注意:0 只有作为号码朗读时,标记才会生效,0 处理为数值时,一律读作 zero。
]]
audio.tts(0, "[o1]大家好12312121212")

静音一段时间#

--[[
格式: [p*] (*=无符号整数)
参数: * – 静音的时间长度,单位:毫秒(ms)
]]
audio.tts(0, "[p2000]大家好,我是小宙")

设置语速#

--[[
格式: [s*] (*=0~10)
参数: * – 0-10
说明: 默认语速值为 5,语速的调节范围为默认语速的一半到两倍,即 0 的值比默认语速慢一半,10 的值比默认语速快一倍。
]]
audio.tts(0, "[s5]大家好,我是小宙")

设置语调#

--[[
格式: [t*] (*=0~10)
参数: * – 语调值对应到参数设置的值为 6553*(值-5),即 0 对应到-32765,5 对应到 0,10 对应到+32765
说明: 默认语调值为 5,语调的调节范围为默认语调基频下 64Hz 到上 128Hz。
]]
audio.tts(0, "[t5]大家好,我是小宙")

设置音量#

--[[
格式: [v*] (*=0~10)
参数: * – 音量值对应到参数设置的值为 6553*(值-5),即 0 对应到-32765,5 对应到 0,10 对应到+32765。
说明: 音量的调节范围为静音到音频设备支持的最大值,默认值 5 为中间音量。
]]
audio.tts(0, "[v5]大家好,我是小宙")

设置汉语号码中“1”的读法#

--[[
格式: [y*] (*=0/1)
参数: 0 – 合成号码时“1”读成“yāo”
      1 – 合成号码时“1”读成“yī”
说明: 默认合成号码时“1”读成“yāo”。
]]
audio.tts(0, "[y1]110大家好[y0]110")