音频播放器(AUDIO PLAYER)¶
1. 概述¶
SDK内置的精简音频播放器(simple_mp3_player)用于播放存放在 SPI Flash 中的 MP3 音频。该组件基于 MP3 解码库(mp3lib,libmp3.a)实现,通过 FreeRTOS 任务驱动解码与播报,适用于语音交互中的提示音、播报音播放。播报音的查找与组合播报由上层提示音播放器(prompt_player,见 ☞《提示音播放器》)封装。

图1-1 播放器结构
2. 使用说明¶
2.1. 代码结构¶
| 源文件 | 说明 |
|---|---|
| simple_mp3_player.c simple_mp3_player.h |
精简播放器实现(smp_init / smp_play / smp_stop 等接口) |
| mp3lib(libmp3.a、mp3dec.c、mp3play.c 等) | MP3 解码库 |
2.2. 播放接口¶
播放器核心接口定义于 components/player/simple_mp3_player/simple_mp3_player.h:
int smp_init(void); // 创建播放任务,返回 1 表示成功
int smp_play(uint32_t data_addr, void* play_end_callback); // 从 flash 地址播放 MP3,播放结束调用回调
void smp_stop(void); // 停止播放
void audio_play_set_vol_gain(int32_t gain); // 设置播放音量(0~100)
void audio_play_hw_pa_da_ctl(FunctionalState cmd, bool is_control_pa); // PA/DA 控制,可选择是否控制功放
使用示例:
/* 初始化播放器(创建播放任务) */
smp_init();
/* 播放位于 flash 地址 0x4000 的 MP3 文件,播放结束后回调 play_end_cb */
smp_play(0x4000, play_end_cb);
/* 停止播放 */
smp_stop();
/* 设置音量 */
audio_play_set_vol_gain(80);
提示
MP3 音频数据需存放在 SPI Flash 中,并通过其存储地址(data_addr)进行播放;播放结束时会调用 play_end_callback 回调。
2.3. 与提示音播放器的关系¶
实际工程中的命令词提示音播报一般不直接调用 smp_play,而是通过上层提示音播放器(prompt_player,位于 components/cmd_info/prompt_player.c)按命令词 ID / 字符串进行组合、选择、队列播报,详见 ☞《提示音播放器》。