LuatOS-SOC接口文档(air780E)--audio - 多媒体音频

2023-09-13 22:32:00

常量

常量

类型

解释

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关

返回值

例子


Next

bit64 - 32位系统上对64位数据的基本算术运算和逻辑运算

Previous

adc - 数模转换

评论区仅用于讨论文档内容。如有使用问题或新需求,请进支持群讨论或在官方仓库新建issue

更多推荐

当量因子法、InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(MillenniumEcosystemAssessment,MA)以来,生态系统服务成为学术界的研究热点,其中在生态系统服务功能

学习笔记|模数转换器|ADC原理|STC32G单片机视频开发教程(冲哥)|第十七集:ADC采集

文章目录1.模数转换器(ADC)是什么?手册说明:2.STC32G单片机ADC使用原理19.1.1ADC控制寄存器(ADC_CONTR)19.1.2ADC配置寄存器(ADCCFG)19.1.4ADC时序控制寄存器(ADCTIM)19.3ADC相关计算公式3.编写最简单的ADC采集代码(查询&中断)P10的引脚去获取一个

4、ARM异常处理

一、异常处理1、异常概念处理器在正常执行程序的过程中可能会遇到一些不正常的的事件发生,这时处理器就要将当前的程序暂停下来转去处理这个异常的事件,异常事件完成后再返回到之前被异常打断的点继续执行2、异常处理机制不同的处理器对异常的处理流程大体相同,但是不同的处理器在具体实现的机制上有所不同。比如处理器遇到哪些事件认为是异

【Flink实战】玩转Flink里面核心的Source Operator实战

🚀作者:“大数据小禅”🚀文章简介:【Flink实战】玩转Flink里面核心的SourceOperator实战🚀欢迎小伙伴们点赞👍、收藏⭐、留言💬目录导航Flink的API层级介绍SourceOperator速览Flink预定义的Source数据源案例实战Flink自定义的Source数据源案例-订单来源实战F

Android UT开发简介

一、概述AndroidUT(UnitTesting)开发是指在Android应用程序中进行单元测试的开发过程。单元测试是一种软件测试方法,用于测试应用程序中的最小可测试单元(通常是函数或方法)的正确性。AndroidUT开发的主要目标是确保应用程序的各个单元在不同情况下能够按照预期正确运行。通过编写、运行和维护单元测试

免费、安全、可靠!一站式构建平台 ABS 介绍及实例演示 | 龙蜥技术

编者按:操作系统是一个大的软件集合,成百上千个软件之间有相互调用、相互依赖等各种复杂的关联关系,所以统一的软件包格式,能够更友好地管理、定义这些复杂关系。今天,龙蜥社区基础设施Contributor单凯伦带大家了解龙蜥社区官方构建平台ABS,熟悉AnolisOS软件包、镜像构建流程以及ABS未来规划等。本文整理自龙蜥大

【Windows 11】安装 Android子系统 和 Linux子系统

本文使用电脑系统:文章目录一、安卓子系统1.1安装WSA1.2使用二、Linux子系统2.1安装WSL以及WSL相关概念2.2安装一个Linux发行版2.21从MicrosoftStore安装2.22用命令安装2.23拓展三、拓展3.1存储位置3.2虚拟化技术3.3Windows虚拟内存3.3wsl帮助文件一、安卓子系

MySQL 锁机制

1.锁是什么?是为了保证数据并发访问时的一致性和有效性,数据库提供的一种机制。锁机制的优劣直接影响到数据库的并发处理能力和系统性能,所以锁机制也就成为了各种数据库的核心技术之一。同时,锁机制也为实现MySQL事务的各个隔离级别提供了保证。2.锁的缺点锁是一种消耗资源的机制,想要实现锁的各种操作,包括获得锁、检测锁是否已

2023数学建模国赛游记

第一参加数学建模国赛,大概也是最后一次参加了,记录一下这几天的历程吧。我们队的情况是计算机+电气+数统,计算机负责编程,电气学院的负责论文部分,数统的同学负责建模,数据处理部分我们是共同承担。第一天下午6点发题,5点学校的所有队伍基本都到管理学院的机房在等着发题,5点多题发了,我们开始看题,几个人扫了一下C题觉得可以做

Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

错误Can'tcallnumpy()onTensorthatrequiresgrad.Usetensor.detach().numpy()instead.原因变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以

【探索C++】C++对C语言的扩展

(꒪ꇴ꒪),Hello我是祐言QAQ我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误,请在评论区指正,感谢🙏一、引用1.变量名变量名本质上就

热文推荐