转载:https://www.cnblogs.com/talkaudiodev/p/8996338.html
本人从事音频软件开发10+年,既开发过voice相关的,又开发过music相关的,但大多数还是开发voice相关的。掐指一算到现在在通信终端上开发过的语音解决方案共有五套,它们既有有线通信的,又有无线通信的;既有在上层开发的,又有在底层开发的;既有在ARM上开发的,又有在DSP上开发的,总之各有特色。但因为都是语音通信解决方案,又有共同的地方,都要有语音的采集播放、编解码、前后处理和传输等。今天我就选取有代表性的三套方案,讲讲它们的实现。
1,在嵌入式Linux上开发的有线通信语音解决方案
这方案是在嵌入式Linux上开发的,音频方案基于ALSA,语音通信相关的都是在user space 做,算是一个上层的解决方案。由于是有线通信,网络环境相对无线通信而言不是特别恶劣,用的丢包补偿措施也不是很多,主要有PLC、RFC2198等。我在前面的文章(如何在嵌入式Linux上开发一个语音通信解决方案)详细描述过方案是怎么做的,有兴趣的可以去看看。
2,在Android手机上开发的传统无线通信语音解决方案
这方案是在Android手机上开发的,是手机上的传统语音通信方案(相对于APP语音通信而言)。Android是基于Linux的,所以也会用到ALSA,但是主要是做控制用,如对codec芯片的配置等。跟音频数据相关的驱动、编解码、前后处理等在Audio DSP上开发,网络侧相关的在CP(通信处理器)上开发,算是一个底层解决方案。该方案的软件框图如下: