转载:https://www.cnblogs.com/talkaudiodev/p/8168180.html
本人在传统的语音通信公司做过手机和IP电话上的语音软件开发,也在移动互联网公司做过APP上的语音软件开发。现在带实时语音通信功能的APP有好多,主流的有微信语音、QQ电话、钉钉等,当然也包括我开发过的那款APP(那款APP在实时通信APP排名中一直靠前)。既然都做语音软件开发,那肯定有很多共同的地方,比如需要相同的语音专业知识,都有语音前处理、编解码、传输等。通过自己的观察,也有一些不同的地方。我们今天主要聊聊这些不同点。
1,在传统语音通信公司都是在具体硬件上开发音频软件。有了硬件就要有相应的驱动,在Linux/Android上就是ALSA相关的驱动软件开发。对于前处理、编解码、传输等模块,既可以在底层做也可以在偏上面的层次做,这取决于软件架构。我曾经在Linux平台上硬件一样软件需求一样的情况下由于软件架构不一样开发过两套语音方案。一套方案是驱动在kernel space做,前处理、编解码、传输等在user space做。另一套方案是驱动和前处理、编解码、传输等全部在kernel space做。之所以要做两套方案是因为第一套方案的性能不够好,尤其表现在one way delay上。
在移动互联网公司做APP上的语音软件都是在上层做开发。驱动等对开发人员是黑盒子,开发人员要做的有前处理、编解码、传输