一 嵌入式音频应用的应用场景
1> 智能音箱
场景:用户说出想要听的歌曲名,歌手,甚至直接播放一小段旋律或者歌曲本身,让智能音箱在本地查找或者联网查找后进行播放
2> 录音/翻译设备
场景:开会的时候,可以使用录音设备/软件 进行录音,然后翻译成文字进行记录
3> 视频直播
场景:腾讯会议,直播软件等,都是需要音频功能开发的
4> 智能家居
场景:回到家,对着中控说出拉起窗帘,空调调整成制热20度,打开电视机。然后就可以躺在沙发上享受人生了
5> 智能穿戴设备
场景:带上手表,开始跑步/骑车,通过语音对着手表说 “播放音乐”,”开始骑行”,手表就会进行相应的操作
6> 车载中控
场景:场景类似于智能穿戴设备,大家也非常常见,对着方向盘说出我要去哪,或者拨打谁的电话,中控都能准确的执行对应操作
二音频应用开发中的一些名词解释
Pcm 编码 :脉冲编码调制,最原始的音频编码格式。通常通过主机设备、麦克风采集到的音频数据都是pcm编码格式
Opus 编码:他是一种有损声音编码格式,由于完全开源,所以应用场景非常广泛。常用与网络中的实时音频传输
例如:可以使用任意麦克风采集pcm编码的音频,将该编码转码成 opus编码后进行传输。因为opus编码会对pcm编码进行压缩,所以体积更小,传输效率更高,并且opus编码允许动态调节比特率、支持语音和音乐、支持单声道和立体声。传输后的opus编码文件,可以直接播放,也可以保存到容器(文件中),未来再播放(录音设备,翻译设备)
资料引用:opus是一个有损声音编码的格式,由IETF开发,没有任何专利或限制,适用于网络上的实时声音传输,标准格式为RFC 6716,其技术来源于Skype的SILK及Xiph.Org的CELT编码.
Opus文件是一个用开放的Opus编解码器编码的数字音频文件。Opus文件使用Ogg容器格式。目前一些知名的媒体播放器如VLC支持直接播放.opus文件,而其他的播放器则需要先安装一个外部的Opus编解码器(“libopus”)。
Opus开发团队提供了一套参考工具,用于获取.opus文件的信息(“opusinfo”),并将它们转换为/从WAV(“opusenc”、“opusdec”)。在Microsoft Windows上,可以使用安装了免费编码器包的foobar2000创建Opus编码的音频。
opus使用约束
采样率约束:
输入信号的采样率(Hz),必须是8000、12000、16000、24000、或48000。
OpusEncoder* opus_encoder_create(opus_int32 Fs, int channels, int application, int *error);
函数参数中的Fs就是采样率。
帧长约束:
opus为了对一个帧进行编码,必须正确地用音频数据的帧(2.5, 5, 10, 20, 40 or 60 ms)来调用opus_encode()或opus_encode_float()函数。
比如,在48kHz的采样率下,opus_encode()参数中的合法的frame_size(单通道的帧大小)值只有:120, 240, 480, 960, 1920, 2880。即:
frame_size = 采样率 * 帧时间。
因为需要满足帧时间长度为10,20,40,60ms这些才能编码opus,因而需要对输入数据进行缓冲裁剪
兼容opus的容器格式:
有ogg,ts,mkv。但ts无法播放,mkv只能foobar播放,ogg能用foobar,vlc播放。因而不再考虑opus合成到ts