xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
audio_svc — 音频服务层教学例程

平台 目标 板子
lm620 r4f4 e837n_v01

演示通过 xt_audio_svc(音频服务) 服务层 API 播放 TTS 和音频文件。

预期行为

TTS 播放 ( XT_CFG_AUDIO_SVC_TTS ):

音频文件播放 ( XT_CFG_AUDIO_SVC_FILE ):

  • 调用 xt_audio_svc_file_play 播放 data 分区中的音频文件
  • 默认播放 /test.amr
  • 注意:xmake 默认只开启了依赖 amr 组件,如需播放其他格式请配置对应的音频格式组件依赖(如 mp3)

编译和运行

cd examples/platform_specific/lm620/audio_svc
xt --target lm620/r4f4 --board e837n_v01 fullclean build

例程说明

宏 例程 说明
XT_CFG_AUDIO_SVC_TTS test_tts_play TTS 文本转语音播放
XT_CFG_AUDIO_SVC_FILE test_file_play 音频文件播放

切换例程:修改 src/example_main.c 中 XT_CFG_AUDIO_SVC_TEST 的值。

音频文件格式

xt_audio_svc_file_play 支持的格式及对应参数:

格式 采样率 声道 镜像文件 镜像大小
.amr 8000 1 (mono) images/data_amr.img 64KB
.mp3 16000 1 (mono) images/data_mp3.img 64KB
.wav 16000 1 (mono) images/data_wav.img 192KB
.opus 16000 1 (mono) images/data_opus.img 64KB
.pcm 16000 1 (mono) images/data_pcm.img 192KB

播放文件路径由 src/test_file_play.c 中的 PLAY_FILE 宏控制(默认 /test.amr)。

格式是否支持看实际情况而定。

下载

下载固件时,根据要播放的音频格式,同时选中对应的 data 分区镜像:

播放格式 需下载的镜像 烧录地址(示例)
AMR images/data_amr.img data 分区
MP3 images/data_mp3.img data 分区
WAV images/data_wav.img data 分区
OPUS images/data_opus.img data 分区
PCM images/data_pcm.img data 分区

例如播放 AMR 文件时,下载列表应为:

xxxx.bin (固件)
images/data_amr.img (data 分区镜像 — 内含 /test.amr)
...

镜像内容

每个 images/data_*.img 均为 littlefs 格式(block=4096),内部结构:

/
└── test.<ext>

音频文件生成

源文件位于 src/ 目录,已统一转换为目标采样率和格式。

如需从 WAV 重新生成:

# AMR (8kHz AMR-NB, 需 libopencore-amrnb-dev)
ffmpeg -i <input.wav> -ar 8000 -ac 1 -acodec libopencore_amrnb test.amr
# PCM (16kHz raw s16le)
ffmpeg -i <input.wav> -f s16le -acodec pcm_s16le -ar 16000 -ac 1 test.pcm
# WAV (16kHz)
ffmpeg -i <input.wav> -acodec pcm_s16le -ar 16000 -ac 1 test.wav
# MP3 (16kHz)
ffmpeg -i <input.wav> -acodec libmp3lame -ar 16000 -ac 1 -b:a 32k test.mp3
# OPUS (16kHz)
ffmpeg -i <input.wav> -acodec libopus -ar 16000 -ac 1 -b:a 24k test.opus

生成镜像:

mklfs -b 4096 -s <size> -c <dir_with_test_file> images/data_<fmt>.img