3.1.12 音频播放和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.getVolume()

获取喇叭音量等级

  • 参数

  • 返回值

number vol,喇叭音量等级

  • 例子

audio.getVolume()

audio.getMicVolume(vol)

获取麦克音量等级

  • 参数

  • 返回值

number vol,麦克音量等级

  • 例子

audio.getMicVolume()

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`