当前位置: 首页 > news >正文

audio核心技术原理全景解读

音频引擎的核心库是实现高质量声音输出的关键支撑,其内部集成了采样率转换、混音、缓冲管理与硬件抽象等复杂机制。要真正掌握音频开发的主动权,必须深入理解其核心技术原理。本文将以模块化视角,全面解读音频引擎核心库的工作流程与关键技术实现,为进阶开发提供理论支持。

一、概述

audio 核心库 是指 LuatOS 通过对 es8311 或者 TM8211 编解码器进行配置以及传输,从而实现录音,播放音频,播放 TTS(文字转语音)功能,由于此核心库开发较早,历史包袱导致参数过多,使用非常不方便,建议使用 exaudio 扩展库。

重要概念解释:

1.1 硬件 DAC&ADC

也常称为 codec(编码器) ,decoder(解码器) 音频的编解码芯片,目前仅支持"es8311","TM8211",其中 es8311 支持 模拟音频转数据音频的输入,即为录音,也支持数据音频转为模拟音频的输出,即为播放。

1.2 采样率:

决定 “声音会不会漏了高频细节”(比如没抓住小鸟叫),采样率越高,细节越丰富,但是占用的空间也越大

1.3 位深:

决定 “声音的音量变化会不会生硬”(比如能不能分清小声说话和轻声咳嗽),使用 bit 表示,表示单次采样,模拟量使用数据量保存的位数,位数越高质量越高,占用空间越大

1.4 流式播放

一边传输音频数据,一边进行播放,适合一些对实时性要求较高的场景,或者需要对音频进行编码的场景

1.5 流式录音

一边录音,一边上传数据,适合对录音实时性要求较高或者需要对音频进行编码的场景。

1.6 es8311 和 TM8211 的区别

es8311 支持音频的编码和解码,即支持录音和播放,如果需要打电话,则需要使用 es8311

TM8211 仅支持音频的解码,即支持播放

es8311 相对于 TM8211 需要一路 I2C 作为信令的收发,因此电路上 TM8211 要更为简单.

780EHV 模块内部集成了 es8311,方便大家使用音频相关功能,并使用 GPIO20 控制 es8311 的使能;Air8000 以及 Air780 系列其他型号内部不含 es8311,需要外挂,

1.7 audio、exaudio、codec 三个库文件的区别和联系

audio、codec 是核心库,可以调用的最底层的代码,exaudio 是扩展库

audio 库和 exaudio 库都是实现了录音和播放,但是 exaudio 使用更加简单,去掉了历史原因造成的 audio 的冗余参数

codec 库 是实现了音频数据的编码和解码,不会对音频直接播放,audio 和 exaudio 可以对编解码后的音频进行播放

1.8 audio 核心库使用相关组合关系图

如图所示,audio 核心库大致可以分为如下几种组合关系,用户可根据所需功能自行搭配
image

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

3、由于 audio 核心库使用起来比较复杂,所以目前已经不推荐使用 audio 核心库,而是推荐使用 exaudio 扩展库来开发音频应用

4、此处仅仅简单地列举 audio 核心库中少数 api 的使用方法,供大家学习理解使用
image

三、常量详解

这些常量用于 audio 库的各种配置和操作,在脚本代码中不需要声明,可直接调用。

3.1 音频格式常量

这些常量用于指定音频数据的格式:

audio.PCM
image

3.2 音频事件常量

这些常量用于 audio.on() 回调函数中的事件类型

audio.MORE_DATA
image

audio.DONE
image

audio.RECORD_DATA
image

audio.RECORD_DONE
image

3.3 休眠模式常量

这些常量用于 audio.pm() 函数的休眠模式

audio.RESUME
image

audio.STANDBY
image

audio.SHUTDOWN
image

audio.POWEROFF
image

四、函数详解

4.1 配置相关

配置相关函数用于音频硬件配置、参数设置和事件注册。

audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay)

功能

配置音频硬件参数。

参数

id
image

paPin
image

onLevel

image

dacDelay
image

paDelay
image

dacPin
image

dacLevel
image

dacTimeDelay
image

返回值

示例
image

audio.setBus(id, bus_type, config_table)

功能

配置音频 DAC(编解码器)

参数

id
image

bus_type
image

config_table

image

返回值

local result = audio.setBus(id, bus_type, config_table)

result
image

例子
image

audio.vol(id, value)

功能

设置播放音量

参数

id
image

value
image

返回值

local result = audio.vol(id, value)

result
image

例子
image

audio.micVol(id, value)

功能

设置 mic 音量

参数

id
image

value
image

返回值

local result = audio.micVol(id, value)

result
image

例子
image

audio.on(id, callback)

功能

注册音频事件回调函数

参数

id
image

callback
image

返回值

例子
image

audio.pm(id,pm_mode)

功能

休眠控制(一般会自动调用 RESUME 模式)

参数

id
image

pm_mode
image

返回值

local result = audio.pm(id,pm_mode)

result
image

例子
image

4.2 检查相关

检查相关函数用于获取音频状态、错误信息和调试信息。

audio.getError(id)

功能

获取最近一次播放结果

参数

id
image

返回值

local result = audio.getError(id)

result
image

user_stop
image

file_no
image

例子
image

audio.isEnd(id)

功能

检查音频通道是否播放结束

参数

id
image

返回值

local result = audio.isEnd(id)

result
image

例子
image

audio.debug(on_off)

功能

配置调试信息输出

参数

on_off
image

返回值

例子
image

4.3 播放相关

播放相关函数,用于音频播放控制。

audio.play(id, path, errStop)

功能

播放音频文件或者停止播放(可以是文件或 TTS)

注意事项:

1、播放完成后,会回调一个 audio.DONE 消息

2、可以用 pause 来暂停或者恢复

3、audio.play(0) 即为停止播放,可以停止文件或 TTS

参数

id
image

path
image

errStop
image

返回值

local result = audio.play(id, path, errStop)

result
image

例子
image

audio.pause(id, pause)

功能

暂停或恢复播放

参数

id
image

pause
image

返回值

local result = audio.pause(id, pause)

result
image

例子
image

audio.playStop(id)

功能

停止播放音频文件,等同于 audio.play(id)

参数

id
image

返回值

local result = audio.playStop(id)

result
image

例子
image

audio.tts(id, text)

功能

播放或暂停播放 TTS 文本转语音

参数

id
image

text
image

返回值

local result = audio.tts(id, text)

result
image

例子
image

audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed)

功能

启动一个音频通道,仅用于流式播放。

参数

id
image

audio_format
image

num_channels
image

sample_rate
image

bits_per_sample
image

is_signed
image

返回值

local result = audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed)

result
image

示例
image

audio.write(id, data)

功能

向音频通道中写入音频数据,用于播放

参数

id
image

data
image

返回值

local result = audio.write(id, data)

result
image

示例
image

audio.finish(id)

功能

写入最后一块数据后,通知多媒体通道已经没有更多数据需要播放了

参数

id
image

返回值

local result = audio.finish(id)

result
image

示例
image

audio.stop(id)

功能

停止指定的多媒体通道

参数

id
image

返回值

local result = audio.stop(id)

result
image

示例
image

audio.record(id, record_type, record_time, amr_quailty, path, nil, buff0, buff1,channelCount)

功能

录音

参数

id
image

record_type
image

record_time
image

amr_quailty
image

path

image

reserved
image

buff0
image

buff1
image

返回值

local result = audio.record(id, record_type, record_time, amr_quailty, path, nil, buff0, buff1,channelCount)

result
image

示例 1: 录制到文件
image

示例 2: 流式录音
image

audio.recordStop(id)

功能

停止录音

注意:audio 的回调函数返回 audio.RECORD_DONE 的 event 才是真正的结束

参数

id
image

返回值

local result = audio.recordStop(id)

result
image

示例
image

五、模组支持说明

780EHM,780EHV,780EGH,780EGG,以及 8000 全系列均支持;

780EPM,780EGP,700ECP 不支持。

724,722,720,820,795 也不支持。

今天的内容就分享到这里了~

http://www.jsqmd.com/news/350987/

相关文章:

  • 决胜2026执业医师考试:一份全面的备考资料选择与使用指南 - 医考机构品牌测评专家
  • 2026年分样仪选购指南:分样精度/收集容器选择/品牌排名/性能参数深度解析 - 品牌推荐大师1
  • 2026年厦门HE封片机企业最新推荐榜:HE滴染封片机、滴染HE封片机、HE染色封片机、聚焦产品研发实力与行业服务能力深度剖析 - 海棠依旧大
  • 计时工具 Catime
  • 战术级MEMS陀螺适用于哪些领域?
  • Nginx 站点屏蔽/特定国家或地区
  • 【防坑指南 | 可以不会不能不懂】夏日开车注意事项
  • CANN赋能AIGC:深度剖析与实践,解锁智能生成新范式
  • 这款 MEMS 陀螺升级了哪些地方?
  • CANN赋能AIGC:深度定制算子,释放生成式AI的极致性能潜力
  • 当跨境支付遇上PayPal:避开这些“隐形成本”,让每一分钱都走得更聪明
  • 全网热议!2026年高口碑系统门窗五金产品推荐,帮助消费者选择优质产品 - 睿易优选
  • 机器学习--分类模型、特征工程与评估指标的深度复盘
  • AI办公是否真的提效?从5个真实场景看清价值与边界
  • LeNet-5
  • 2月6号
  • CANN模型量化实战:INT8推理加速与精度保持
  • Excel罗马数字与符号函数实战:ROMAN、ARABIC、SIGN三剑客
  • 如何备考副主任医师:3大机构教学质量深度揭秘与实战推荐 - 医考机构品牌测评专家
  • Winget 安装 VS2019,VS2022等工具
  • 2026年球磨仪厂家权威推荐榜:实验室专用/高精度/耐磨耐用TOP品牌盘点 - 品牌推荐大师1
  • 每周技术加速器:智能体记忆-不只是向量库,更是“可自我演化的认知状态”
  • 豆包目前是否支持广告投放?如何通过豆包AI推广获客? - 品牌2025
  • 2026临床执医老师口碑实力榜:谁讲的考点更易懂好记?一看就懂! - 医考机构品牌测评专家
  • 地铁广告刷屏的蚂蚁阿福,藏着一套世界级医疗AI技术
  • 从IPD实践者到研发体系架构师:(二)以“岐黄之术”的望闻问切,透视研发体系健康度与瓶颈
  • 2026年厦门制片染色一体机厂家参考:离心制片染色一体机、细胞分离制片染色一体机、全自动沉降制片染色一体机、LCT制片病理染色一体机、金瑞博体外诊断设备专业之选 - 海棠依旧大
  • android 15 上 禁止打印服务!
  • 硬盘坏了,数据还能恢复吗?——30年数据恢复工程师的实用指南
  • 如何创建一个PR