0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

速通音频处理:掌握TTS播放、文件播放与录音核心,实现完整功能

青山老竹农 来源:合宙LuatOS 作者:合宙LuatOS 2025-11-21 19:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

播放TTS、播放音频文件及录音是构建完整音频处理功能的三大核心模块。若想快速掌握并实现完整音频处理能力,无需深挖底层细节,只需聚焦“资源加载、播放控制、状态同步与异常处理”四大关键环节——本文将拆解这三大模块的核心逻辑,助你高效打通从核心功能到完整功能的实现路径。

一、概述

本文档详细介绍了基于 Air8000 开发板或者 Air8000 核心板的音频功能开发,涵盖音频播放、文字转语音、流式音频处理和录音等核心功能。通过本指南,开发者可以快速掌握 Air8000 的音频处理能力,并实现各种音频应用场景。

录音功能将麦克风采集的模拟声音信号转换为数字音频文件,支持 AMR 和 PCM 格式,可设置采样率、时长和存储路径,适用于语音记录、语音识别等场景。

TTS(文字转语音)将文本内容实时转换为语音播放,支持中文普通话和多种发音风格调节,可通过特殊标记控制语速、语调、音量等参数,适用于语音提示、内容播报等应用。

播放音频文件功能用于播放设备中的音频文件,支持 MP3、WAV、AMR 等多种格式,可进行单文件或多文件连续播放,适用于音乐、语音提示等场景。其中流式播放仅支持 PCM 格式。适用于音乐播放、语音提示、告警音效等各种音频应用场景。

二、演示功能概述

1、main.lua:主程序入口文件,加载以下 2-6 文件运行。

2、play_file.lua: 播放音频文件,可支持 wav,amr,mp3 格式音频:

自动播放一个 sample-6s.mp3 音乐

点 powerkey 按键进行音频切换

点击 boot 按键停止音频播放

3、play_stream: 流式播放音频,仅支持 PCM 格式:

创建一个播放流式音频 task(task_audio)

创建一个模拟获取流式音频的 task(audio_get_data)

此 task 通过流式传输不断向 exaudio.play_stream_write 填入播放的音频

播放 task 不断播放传入流式音频

使用 powerkey 按键进行音量减小,点击 boot 按键进行音量增加

4、play_tts: 支持文字转普通话输出,需要固件支持:

播放一个 TTS

点 powerkey 按键进行 tts 的音色切换

支持五种音色:51 – 许久、52 – 许多、53 – 晓萍、54 – 唐老鸭、55 – 许宝宝 - 点击 boot 按键停止音频播放

5、record_file: 录音到文件,仅支持 PCM 格式

主程序录音到/record.amr 文件

使用 powerkey 按键进行录音音量减小

点击 boot 按键进行录音音量增加

6、record_stream: 流式录音,仅支持 PCM。

主程序录音进行流式录音

录音过程中不断的进行 recode_data_callback 回调,回调内容为音频流的地址和长度

7、sample-6s.mp3/10.amr: 用于测试本地 mp3 和 amr 文件播放

8、test.pcm: 用于测试 pcm 流式播放(实际可以云端下载)

三、准备硬件环境

1、Air8000 开发板 + 喇叭或者Air8000 核心板 +AirAudio_1010 音频配件板 + 喇叭

wKgZO2kgOu2AA872AAi8B2I9-r0987.pngwKgZO2kgOsWAPKC7AAwN2zcPKHo254.png

Air8000 核心板和 AirAudio_1010 配件板的硬件接线方式为:

TYPE-C USB 数据线一根

Air8000 开发板/核心板通过 TYPE-C USB 口供电;

TYPE-C USB 数据线直接插到核心板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;

四、准备软件环境

1、Luatools 下载调试工具

2、Air8000 V2016 版本固件,选择支持 TTS 功能的 1、3、5、7、13 或 101、103、105、107、113 号固件。

3、 luatos 需要的脚本和资源文件

4、 lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;

五、API 接口

exaudio 扩展库

exaudio 扩展库是 audio 核心库的扩展库,通过简化配置参数和统一接口设计,让音频开发更简单易用。它完整支持录音、播放音频,播放 TTS(文字转语音)功能,并内置了流式处理、电源管理等高级特性,建议新项目直接使用 exaudio 替代 audio 核心库。

六、代码解析

1、main.lua:主程序入口;

wKgZO2kgO72AP4gHAAwXHd5dreM580.png

2、play_file.lua: 播放音频文件,可支持 wav,amr,mp3 格式音频

wKgZO2kgO-2APBMLAA0T4J4QF00522.png

3、play_stream: 流式播放音频,仅支持 PCM 格式

wKgZPGkgPBmAQIq1AA5BLOKJ1W0004.png

4、play_tts: 支持文字转普通话输出需要固件支持

wKgZO2kgPEyAIIPvAA4WLe59sKM398.png

5、record_file: 录音到文件,仅支持 PCM 格式

wKgZO2kgPHyAZe9FAApvzRIpVx8590.png

6、record_stream: 流式录音,仅支持 PCM

wKgZO2kgPKeAQlxVAAh0iTIW7js538.png

七、运行结果展示

1、play_file.lua: 播放音频文件,可支持 wav,amr,mp3 格式音频

wKgZO2kgPPCAHHjLAAr0Fl8VfrU219.png

2、play_stream: 流式播放音频,仅支持 PCM 格式

wKgZO2kgPR-AMai9AAaC-ULwQcg106.png

3、play_tts: 支持文字转普通话输出需要固件支持

wKgZPGkgPWyAbNtaAAqrJSYuBsU628.pngwKgZO2kgPYqAAeOqAAPcchOsmuE882.png

4、record_file: 录音到文件,仅支持 PCM 格式

wKgZO2kgPbWAM2LkAAhH8gpxYpg724.png

5、record_stream: 流式录音,仅支持 PCM

wKgZO2kgPdyAXzhqAAbEhEhmtZQ640.png

八、总结

本文演示了如何使用 Air8000 开发板或者 Air8000 核心板 +AirAUDIO_1010 音频配件板,实现完整的音频处理功能,涵盖了音频文件播放、流式播放、TTS 语音合成以及文件录音和流式录音两种录音模式,为开发各类语音应用提供了灵活的硬件基础和软件解决方案。

九、常见问题

1. 音频播放没有声音怎么办?

检查硬件连接是否正确、确认喇叭是否工作正常、检查音频配件板的供电和使能引脚配置是否正确、验证 GPIO 管脚配置是否正确。

2. TTS 播放没有声音怎么办?

确认所使用的固件是否支持 TTS 功能、检查 TTS 播放流程是否正常触发。

3. 录音功能无法工作怎么办?

确认麦克风硬件连接正确且完好、检查录音参数格式设置是否支持、确保存储空间充足。

4. 流式播放或录音过程中中断怎么办?

检查数据缓冲区管理逻辑确保数据持续供给、确认播放与录音的采样率及格式设置一致、优化系统任务调度避免阻塞。


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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 音频处理
    +关注

    关注

    0

    文章

    239

    浏览量

    18336
  • TTS
    TTS
    +关注

    关注

    0

    文章

    66

    浏览量

    11592
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DSP教学实验箱:音频采集与播放实验

    学习McASP管脚的使用方法,掌握音频采集播放的原理和过程,并实现音频的采集与播放
    的头像 发表于 10-25 17:41 3106次阅读
    DSP教学实验箱:<b class='flag-5'>音频</b>采集与<b class='flag-5'>播放</b>实验

    HarmonyOS实战开发-如何实现音频低时延录制和播放,AudioVivid音乐播放的相关功能

    介绍 本示例主要展示了音频低时延录制和播放,AudioVivid音乐播放的相关功能: 低时延录制。 低时延播放。 AudioVivid
    发表于 05-11 20:26

    音频文件(WAV)特技播放的原理及实现

    本帖最后由 eehome 于 2013-1-5 10:08 编辑 音频文件播放是开发多媒体软件中的一个重要内容,但有时需要对它进行特技播放,如快速播放,慢速
    发表于 03-12 00:42

    基于HarmonyOS Player,实现音频播放、管理控制和采集

    只对核心代码进行讲解,对于完整代码,我们在9 参考章节提供下载方式。接下来我们会讲解整个工程的代码结构,如下图:api:音频播放器及媒体接口文件
    发表于 09-16 15:07

    如何在FETMX8MQ-C核心板上实现低功耗音频播放

    Cortex-M4处理器。本文将系统讲解——如何在FETMX8MQ-C核心板上实现低功耗音频播放。01、低功率
    发表于 12-20 07:24

    【1024平头哥开发套件开发体验】CB5654 开发实现TTS播放文件内容!

    前段时间实现一个播放SD的里的音乐的功能!今天试着实现读取SD卡里的文件,并用TTS
    发表于 01-13 18:38

    在Linux下如何实现音频播放功能

    在Linux下如何实现音频播放功能
    发表于 01-26 06:35

    如何通过OpenHarmony的音频模块实现录音变速功能

    ; return data;},总结本文介绍了通过使用OpenHarmony音频模块的AudioCapturer接口实现录音功能。AudioCapturer接口对于原始数据的
    发表于 08-25 11:45

    HarmonyOS音频开发指导:使用OpenSL ES开发音频播放功能

    携带录音数据的buffer。size:表示buffer的大小。 完整示例 参考以下示例代码,播放一个音频文件。 添加头文件。 #includ
    发表于 10-24 17:17

    MD播放录音功能

    MD播放录音功能              录音
    发表于 12-22 09:59 2132次阅读

    采用SPCE061A设计的SIO实现数码录音播放

    采用SPCE061A设计的SIO实现数码录音播放 本文就是介绍利用SPCE061A的这两个资源和串行接口的FLASH(SPR1024)来开发数码录音
    发表于 04-20 11:45 1331次阅读
    采用SPCE061A设计的SIO<b class='flag-5'>实现</b>数码<b class='flag-5'>录音</b>及<b class='flag-5'>播放</b>

    使用低级音频函数实现音频采集与播放

    使用低级音频函数实现音频采集与播放,下来看看。
    发表于 01-21 11:17 8次下载

    微雪电子Arduino 音频播放扩展板简介

    Arduino音频播放模块 VS1053音频解码 带录音功能 支持常用音频文件格式 多
    的头像 发表于 12-19 15:56 3301次阅读
    微雪电子Arduino <b class='flag-5'>音频</b><b class='flag-5'>播放</b>扩展板简介

    你要的录音&amp;播放录音功能,直接用!Air201资产定位模组LuatOS快速入门

    音频解码芯片(Audio Codec)及MIC麦克,可支持本地的录音功能;使用配套喇叭即可将录音保存的数据进行播放,操作极为方便。 本期,我
    的头像 发表于 09-27 07:06 1198次阅读
    你要的<b class='flag-5'>录音</b>&amp;<b class='flag-5'>播放</b><b class='flag-5'>录音</b><b class='flag-5'>功能</b>,直接用!Air201资产定位模组LuatOS快速入门

    新手速成:掌握TTS/文件播放/录音核心,构建完整音频处理功能

    刚接触音频开发时,TTS播放文件播放录音功能看似
    的头像 发表于 11-21 19:26 422次阅读
    新手速成:<b class='flag-5'>掌握</b><b class='flag-5'>TTS</b>/<b class='flag-5'>文件</b><b class='flag-5'>播放</b>/<b class='flag-5'>录音</b><b class='flag-5'>核心</b>,构建<b class='flag-5'>完整</b><b class='flag-5'>音频</b><b class='flag-5'>处理</b><b class='flag-5'>功能</b>