提示音工程使用说明
1. 提示音打包脚本使用
- 提示音打包脚本sound_play.py位于工程的image文件夹,提示音音频文件位于工程的image/wav文件夹
- 编译前,建议先clean project一次再编译,否则playback.dat文件不会刷新
- 音频文件格式:目前只支持采样率16kHz,位宽16bit的单声道WAV音频
- 音频文件命名:统一使用数字+下划线开头
- 运行Python脚本需要安装Python解释器和对应的IDE,具体可参考:超详细Python安装教程
- 运行sound_play.py,在wav文件夹中会生成新的playback.dat文件
脚本运行成功输出如下图所示
- 将其复制到image文件夹下,替换掉原来的playback.dat
2. playback.dat头部格式说明
- 4字节:提示音ID
- 4字节:提示音文件格式,0:MP3,1:WAV,2:ADPCM
- 4字节:首地址
- 4字节:长度
3. oss/lib/resample.h接口调用示例
- 应用中主要使用sound_init和sound_action两个接口
void sound_init(void);
int8_t sound_action(uint16_t id, uint32_t SampleRate, uint32_t BitsPerSample, uint32_t Channels, uint32_t frame_byte_length, uint8_t option);
- sound_action参数说明:
id:提示音ID,与WAV文件夹中提示音音频编号对应
SampleRate:与ADC采样率对应
BitsPerSample:位宽
Channels:声道数,一般为单声道
frame_byte_length:1帧数据长度,一般为256 >> 1
option:使能/失能播报,从Options_EnableEnum中选择
- 提示音播报初始化:
在src/main.c的user_init中,调用sound_init完成提示音播报初始化
void user_init(void){
denoise_init();
power_control_init();
i2c_init();
key_init();
led_init();
sound_init();
}
- 提示音播报:
例如,应用场景为按下按键后播放提示音,可以在按键处理函数中调用sound_action
void deal_key(void)
{
uint8_t key_value = 0;
key_value = key_scan();
if (key_value == KEY_NULL)
{
return;
}
debug("key_value = %d\r\n", key_value);
switch (key_value)
{
case KEY_UP:
(void)sound_action(1, 16000, 16, 1, 256 << 1, ENABLE);
break;
case KEY_DOWN:
(void)sound_action(2, 16000, 16, 1, 256 << 1, ENABLE);
break;
case KEY_LEFT:
(void)sound_action(3, 16000, 16, 1, 256 << 1, ENABLE);
break;
case KEY_RIGHT:
(void)sound_action(4, 16000, 16, 1, 256 << 1, ENABLE);
break;
case KEY_OK:
(void)sound_action(5, 16000, 16, 1, 256 << 1, ENABLE);
break;
}
}