音频播放和TTS¶
作者:闫国梁 最后更新时间:2020年7月6日 ## 音频播放和TTS
模块支持播放音频文件和TTS(文字转语音)功能,AT版本和LUAT版本均支持音频播放,AT版本和带TTS的LUAT版本支持TTS功能。音频文件目前支持mp3和amr ## AT模式 ### TTS(Text To Speech)功能:AT+CTTS 语法规则:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
TTS工作模式 |
0 |
停止播放TTS |
|
1 |
播放TTS,使用UCS2编码 |
||
2 |
播放TTS,使用GBK编码(中文)和ASCII编码(数字) |
||
TTS文本 |
中文和数字 |
||
TTS工作状态 |
0 |
TTS非播放状态 |
|
1 |
TTS播放状态 |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
TTS工作模式 |
0 |
停止播放TTS |
|
1 |
播放TTS,使用UCS2编码 |
||
2 |
播放TTS,使用GBK编码(中文)和ASCII编码(数字) |
||
TTS文本 |
中文和数字 |
||
TTS工作状态 |
0 |
TTS非播放状态 |
|
1 |
TTS播放状态 |
举例:
命令(→) /返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+CTTS=2 ,“123,欢迎你的到来” |
播放数字和中文。 注:目前暂时 无法播放英文,中的英 文发音不是单词,而是 一个一个分离的字母。 |
← |
OK |
|
←(URC) |
+CTTS:0 |
播放完 毕,会有这个URC上报 |
→ |
AT+CTTS=0 |
也可以在播放过程 中用这个命令终止播放 |
← |
OK |
设置 TTS 播放模式:AT+CTTSPARAM¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CTTSPARAM=, ,,[,] |
OK |
查询命令 |
AT+CTTSPARAM? |
+CTTSPARAM:,,,, OK |
测试命令 |
AT+CTTSPARAM=? |
OK |
参数定义:
参 数 |
定义 |
取 | 对取值的说明 值 | |
|
---|---|---|---|
TTS播放音量 |
1 0 0 |
缺省值为50 |
|
TTS播放模式, range:0-3 |
0 |
auto read digit, and read digit based on number rule first |
|
1 |
auto read digit, and read digit based on telegram rule first |
||
2 |
read digit based on telegram rule |
||
3 |
read digit based on number rule |
||
TTS播放音高 |
1 0 0 |
缺省值为50 |
|
TTS播放速度 |
1 0 0 |
缺省值为50 |
|
TTS播放通道 |
0 |
main channel |
|
1 |
aux channel |
语音文件播放:AT+CAUDPLAY¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CAUDPLAY=[,] |
OK |
查询命令 |
AT+CAUDPLAY? |
+CAUDPLAY: |
OK |
||
测试命令 |
AT+CAUDPLAY=? |
+CAUDPLAY: (取值范围列表), OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
使用模式 |
1 |
开始播放(start) |
|
2 |
停止播放(stop) |
||
3 |
暂停播放(pause) |
||
4 |
恢复播放(resume) |
||
音频文件名字 |
PCM,WAV,MP3。需要加后缀 |
举例:
命令(→) /返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
A T+FSCREATE=“111.mp3” |
创建音频文件 |
← |
OK |
|
→ |
AT+FSWRITE =“111.mp3”,0,6314,20 |
输入音频 文件。这里长度6314只 是举例,请以实际为准 |
← |
> |
这里输入音频文件内容 (二进制,即16进制) |
← |
OK |
|
→ |
AT+ CAUDPLAY=1,“111.mp3” |
播放音频文件注:音 频文件名字需要加后缀 |
← |
OK |
|
→ |
AT+CAUDPLAY=3 |
暂停播放 |
← |
OK |
|
→ |
AT+CAUDPLAY=4 |
恢复播放 |
← |
OK |
|
→ |
AT+CAUDPLAY=2 |
终止播放 |
← |
OK |
语音通道切换:AT+AUDCH¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+AUDCH=, |
OK |
查询命令 |
AT+AUDCH? |
+AUDCH: , OK |
测试命令 |
AT+AUDCH=? |
+AUDCH: (range of s,list of s) OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
音频输出通道 |
0 |
通道 0,听筒(receiver) |
|
1 |
通道 1,耳机(headphone) |
||
2 |
通道 2,喇叭(speaker) |
||
音频输入通道 |
0 |
main mic |
|
1 |
auxilary mic |
||
3 |
headphone mic left |
||
4 |
headphone mic right |
RECEIVER 音量控制:AT+CLVL¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+CLVL= |
OK |
查询命令 |
AT+CLVL? |
+CLVL: OK |
测试命令 |
AT+CLVL=? |
+CLVL: (取值范围) OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
音频通道 |
0~100 |
0 声音最小,100 声音最大。缺省值为 60 |
LUAT模式¶
audio.play(priority, type, path, vol, cbFnc, dup, dupInterval)¶¶
播放音频
参数
传入 值类型
释义
number
priority,音频优先级,数值越大,优先级越高
string
type,音频类型,目前仅支持“FILE”、“TTS”、“TTSCC”,“RECORD”
string
path,音频文件路径,跟typ有关 typ为“FILE”时:表示音频文件路径 typ为“TTS”时:表示要播放的UTF8编码格式的数据 typ为“TTSCC”时:表示要播放给通话对端的UTF8编码格式的数据 typ为“RECORD”时:表示要播放的录音id
number
可选参数 ,默认为``4``,vol,播放音量,取值范围0到7,0为静音
f unction
可选参数,默认为``nil``, cbFnc,音频播放结束时的回调函数,回调函数的调用形式如下: cbFnc(result) result表示播放结果: 0-播放成功结束; 1-播放出错 2-播放优先级不够,没有播放 3-传入的参数出错,没有播放 4-被新的播放请求中止 5-调用audio.stop接口主动停止
bool
可选参数,默认为`` nil``,dup,是否循环播放,true循环,false或者nil不循环
number
可选参数,默认为``0``,dupI nterval,循环播放间隔(单位毫秒),dup为true时,此值才有意义
返回值
result,bool或者nil类型,同步调用成功返回true,否则返回false
例子
audio.play(0,"FILE","/ldata/call.mp3")
audio.play(0,"FILE","/ldata/call.mp3",7)
audio.play(0,"FILE","/ldata/call.mp3",7,cbFnc)
-- 更多用法参考demo/audio/testAudio.lua
audio.stop(cbFnc)¶¶
停止音频播放
参数
传入 值类型 |
释义 |
---|---|
f unction |
可选参数,默认为``nil``,cbFnc,停止音频播放的回 调函数(停止结果通过此函数通知用户),回调函数的调用形式为: cbFnc(result) result:number类型 0表示停止成功 1表示之前已经发送了停止动作,请耐心等待停止结果的回调 |
返回值
nil
例子
audio.stop()
audio.setVolume(vol)¶¶
设置喇叭音量等级
参数 | 传入值类型 | 释义 | | — | — | | number | vol,音量值为0-7,0为静音 |
返回值
bool result,设置成功返回true,失败返回false
例子
audio.setVolume(7)
audio.setMicVolume(vol)¶¶
设置麦克音量等级
参数 | 传入值类型 | 释义 | | — | — | | number | vol,音量值为0-15,0为静音 |
返回值
bool result,设置成功返回true,失败返回false
例子
audio.setMicVolume(14)
audio.setStrategy(strategy)¶¶
设置优先级相同时的播放策略
参数 | 传入值类型 | 释义 | | — | — | | number | strategy,优先级相同时的播放策略;0:表示继续播放正在播放的音频,忽略请求播放的新音频;1:表示停止正在播放的音频,播放请求播放的新音频 |
返回值
nil
例子
audio.setStrategy(0)
audio.setStrategy(1)
audio.setTTSSpeed(speed)¶¶
设置TTS朗读速度
参数 | 传入值类型 | 释义 | | — | — | | number | speed,速度范围为0-100,默认50 |
返回值
bool result,设置成功返回true,失败返回false
例子
audio.setTTSSpeed(70)
测试demo见 esource8910_script:raw-latex:script_LuaTask_V2.3.3:raw-latex:demo:raw-latex:`\audio`
常见问题¶
1.在进行TTS播报时,手动中止后,继续发送下一条TTS,出现报错,主要是因为:在TTS不管自动播放还是手动中止都会有个URC上报(+CTTS:0),只有在收到该URC上报后再发送下一条TTS才不会报错。