WoMic技术剖析和简单实现
这段时间项目中需要实现类似于虚拟麦克风功能,在Android实现录音,在pc端实现语音评测功能,在技术调研阶段,了解了一下Womic的实现技术。
1.WoMic 简介
官网:https://wolicheng.com/womic/,有兴趣的朋友可以到官网下载一下看看。
下面是官网提供的一张图,算是技术流程图。在Android 录制音频流并传给PC端,PC将音频流写入到虚拟声卡中,PC的各个应用若是需要音频流,只需要从虚拟声卡中读取即可。
我将软件分为两个部分讲:,我画了更为详细的流程图,按照这个思路来。
2.Android 端
2.1获取音频的方式
Android技术点有两个,音频数据采集以及传输两个问题。熟悉Android开发的同学都知道,Android提供了两种音频采集方式,一种AudioRecord,一种是MediaRecord,这两种的区别在于AudioRecord更接近底层,能够获取音频流,而MediaRecord获取是文件。当然WoMic肯定采用是AudioRecord,至于为什么我会在下面讲。
2.2传输方式
WoMic 提供了三种方式,蓝牙,USB和WiFi。我个人感觉USB就不需要了,你是虚拟麦克风肯定解决一定距离下的音频传输问题。
2.2.1蓝牙
蓝牙传输涉及到Android蓝牙开发,本人没有做过没有发言权,简单的数据传输应该问题不大。
2.2.2 WiFi
这种方式对于Android开发来说很简答,采用TCP或者UDP,若是不清楚的,可以参考这个。Womic采用的是socket中的TCP传输声音数据。
3.PC端
PC端有两个功能,第一,作为音频流接受的服务器,第二,写入到虚拟声卡。
有个技术难点就是虚拟声卡,对于商用软件来说,这就是需要考虑自足研发或者采用免费的开源虚拟声卡。若是你仅仅是为了玩玩,大可不必自己开发,使用开源的虚拟声卡就行,如audio cable 等。
从技术的角度来看,除了虚拟声卡是技术难点之外,基本上没什么技术难点。假如我也不想用虚拟声卡,能否做到这个效果呢,显然是可以的。
延伸
我们先现象虚拟声卡在整个过程中起到什么作用呢,将数据中转给其他需要的应用,若是以Android为服务器,PC端的一起应用作为客服端,只需要监听服务的数据状态是不是就可以了。
当然针对不同的需求,技术路线也要稍微的改变,若是你仅仅想实现一个虚拟麦克风,大可不必大费周章,直接复制WoMic的模式就可,在接受到音频流时就播放即可。
简化版的技术流程图,希望对你有所帮助。点赞和赞赏是对我写作最大的鼓励,谢谢!