TTS功能的说明#
功能介绍#
TTS, 即文本转语音, 特指离线TTS. 对应在线调用云服务器API生成mp3的, 不在讨论范围内.
TTS在固件中分2部分:
TTS功能代码, 必须编译进固件才能使用TTS功能
TTS资源数据, 可编译进固件, 也可以外置到SPI Flash
因为TTS资源数据有750k字节,所以在不同类型的固件会差异
AT固件, 必须是LSAT固件才支持TTS, 即低速+TTS固件,同时TTS资源数据也放在固件内
CSDK固件,标准布局就能放下,一般把TTS资源数据放固件内
LuatOS固件, 在V1104之前仅支持放SPI Flash, V1104开始支持放在固件内,有条件支持
API调用:
通过外置SPI Flash支持TTS的固件, 搭配sfud和audio库, 参考 demo/tts
内嵌TTS资源的固件, 使用audio固件, 也是参考 demo/tts
获取LuatOS支持TTS的固件#
云编译获取
在LuaTools的resource/ec618_lua_lod目录下, 发布V1104之后会有
从LuatOS统一发布中心获取 https://gitee.com/openLuat/LuatOS/releases
内嵌TTS资源数据的LuatOS固件的注意事项:
脚本区会缩减到64k, 且不太可能支持底层升级,但支持脚本升级
默认不支持UI库,因为放不下, 不过依然可以自行编译固件,尝试极限操作
TTS语音参数规则#
TTS语音的参数调整,是播放的字符串的特殊格式来设置的
基本格式是
[参数XXX]待播放的文本
部分参数支持不同的位置多次使用, 例如
[参数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")