常量
常量 | 类型 | 解释 |
---|---|---|
audio.PCM | number | PCM格式,即原始ADC数据 |
audio.MORE_DATA | number | audio.on回调函数传入参数的值,表示底层播放完一段数据,可以传入更多数据 |
audio.DONE | number | audio.on回调函数传入参数的值,表示底层播放完全部数据了 |
audio.BUS_DAC | number | 硬件输出总线,DAC类型 |
audio.BUS_I2S | number | 硬件输出总线,I2S类型 |
audio.BUS_SOFT_DAC | number | 硬件输出总线,软件模式DAC类型 |
audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed)
启动一个多媒体通道准备播放音频
参数
传入值类型 | 解释 |
---|---|
int | 多媒体播放通道号,0或者1 |
int | 音频格式 |
int | 声音通道数 |
int | 采样频率 |
int | 采样位数 |
boolean | 是否有符号,默认true |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功true, 失败false |
例子
audio.start(0, audio.PCM, 1, 16000, 16)
audio.write(id, data)
往一个多媒体通道写入音频数据
参数
传入值类型 | 解释 |
---|---|
string | or zbuff 音频数据 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
audio.write(0, "xxxxxx")
audio.stop(id)
停止指定的多媒体通道
参数
传入值类型 | 解释 |
---|---|
int | audio id,例如0 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
audio.stop(0)
audio.pause(id, pause)
暂停/恢复指定的多媒体通道
参数
传入值类型 | 解释 |
---|---|
int | audio id,例如0 |
boolean | onoff true 暂停,false 恢复 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
audio.pause(0, true) --暂停通道0
audio.pause(0, false) --恢复通道0
audio.on(id, event, func)
注册audio播放事件回调
参数
传入值类型 | 解释 |
---|---|
int | audio id, audio 0写0, audio 1写1 |
function | 回调方法,回调时传入参数为1、int 通道ID 2、int 消息值,只有audio.MORE_DATA和audio.DONE |
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
audio.on(0, function(audio_id, msg)
log.info("msg", audio_id, msg)
end)
audio.play(id, path, errStop)
播放或者停止播放一个文件,播放完成后,会回调一个audio.DONE消息,可以用pause来暂停或者恢复,其他API不可用。考虑到读SD卡速度比较慢而拖累luavm进程的速度,所以尽量使用本API
参数
传入值类型 | 解释 |
---|---|
int | 音频通道 |
string/table | 文件名,如果为空,则表示停止播放,如果是table,则表示连续播放多个文件,主要应用于云喇叭,目前只有EC618支持,并且会用到errStop参数 |
boolean | 是否在文件解码失败后停止解码,只有在连续播放多个文件时才有用,默认true,遇到解码错误自动停止 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
audio.play(0, "xxxxxx") --开始播放某个文件
audio.play(0) --停止播放某个文件
audio.tts(id, data)
TTS播放或者停止
参数
传入值类型 | 解释 |
---|---|
int | 音频通道 |
string/zbuff | 需要播放的内容 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
无
audio.playStop(id)
停止播放文件,和audio.play(id)是一样的作用
参数
传入值类型 | 解释 |
---|---|
int | audio id,例如0 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
audio.playStop(0)
audio.isEnd(id)
检查当前文件是否已经播放结束
参数
传入值类型 | 解释 |
---|---|
int | 音频通道 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
audio.isEnd(0)
audio.getError(id)
获取最近一次播放结果,不是所有平台都支持的,目前只有EC618支持
参数
传入值类型 | 解释 |
---|---|
int | 音频通道 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 是否全部播放成功,true成功,false有文件播放失败 |
boolean | 如果播放失败,是否是用户停止,true是,false不是 |
int | 第几个文件失败了,从1开始 |
例子
local result, user_stop, file_no = audio.getError(0)
audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay)
配置一个音频通道的特性,比如实现自动控制PA开关。注意这个不是必须的,一般在调用play的时候才需要自动控制,其他情况比如你手动控制播放时,就可以自己控制PA开关
参数
传入值类型 | 解释 |
---|---|
int | 音频通道 |
int | PA控制IO |
int | PA打开时的电平 |
int | 在DAC启动前插入的冗余时间,单位100ms,一般用于外部DAC |
int | 在DAC启动后,延迟多长时间打开PA,单位1ms |
int | 外部dac电源控制IO,如果不填,则表示使用平台默认IO,比如Air780E使用DACEN脚,air105则不启用 |
int | 外部dac打开时,电源控制IO的电平,默认拉高 |
int | 音频播放完毕时,PA与DAC关闭的时间间隔,单位1ms,默认0ms |
返回值
无
例子
audio.config(0, pin.PC0, 1) --PA控制脚是PC0,高电平打开,air105用这个配置就可以用了
audio.config(0, 25, 1, 6, 200) --PA控制脚是GPIO25,高电平打开,Air780E云喇叭板用这个配置就可以用了
audio.vol(id, value)
配置一个音频通道的音量调节,直接将原始数据放大或者缩小,不是所有平台都支持,建议尽量用硬件方法去缩放
参数
传入值类型 | 解释 |
---|---|
int | 音频通道 |
int | 音量,百分比,1%~1000%,默认100%,就是不调节 |
返回值
返回值类型 | 解释 |
---|---|
int | 当前音量 |
例子
local result = audio.vol(0, 90) --通道0的音量调节到90%,result存放了调节后的音量水平,有可能仍然是100
audio.setBus(id, bus_type)
配置一个音频通道的硬件输出总线,只有对应soc软硬件平台支持才设置对应类型
参数
传入值类型 | 解释 |
---|---|
int | 音频通道,例如0 |
int | 总线类型, 例如 audio.BUS_SOFT_DAC |
返回值
返回值类型 | 解释 |
---|---|
nil | 无返回值 |
例子
audio.setBus(0, audio.BUS_SOFT_DAC) --通道0的硬件输出通道设置为软件DAC
audio.setBus(0, audio.BUS_I2S) --通道0的硬件输出通道设置为I2S
audio.debug(on_off)
配置调试信息输出
参数
传入值类型 | 解释 |
---|---|
boolean | true开 false关 |
返回值
无
例子
无
bit64 - 32位系统上对64位数据的基本算术运算和逻辑运算
评论区仅用于讨论文档内容。如有使用问题或新需求,请进支持群讨论或在官方仓库新建issue