这段时间项目中需要实现类似于虚拟麦克风功能,在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的模式就可,在接受到音频流时就播放即可。

简化版的技术流程图,希望对你有所帮助。点赞和赞赏是对我写作最大的鼓励,谢谢!

WoMic虚拟麦克风技术剖析相关推荐

  1. WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用

    在完成了对于WCF事务编程(<上篇>.<中篇>.<下篇>)的介绍后,本篇文章将提供一个完整的分布式事务的WCF服务应用,通过本例,读者不仅仅会了解到如何编程实现事务 ...

  2. WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿

    原文:[原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿 在上面一篇文章中,我们对不同版本的IIS,以及ASP.NET得的实现机制进行了详细而深入的分析.在介绍IIS7.0的时候,我们 ...

  3. [原创]虚拟机检测技术剖析

    标题:[原创]虚拟机检测技术剖析 作者:riusksk (泉哥) 主页:http://riusksk.blogbus.com 前言 在当今信息安全领域,特别是恶意软件分析中,经常需要利用到虚拟机技术, ...

  4. WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)

    [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]在.NET中,所有的集合都实现了IEnumerable接口,比如Arra ...

  5. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]

    元数据实际上是服务终结点的描述,终结点由地址(Address).绑定(Binding)和契约(Contract)经典的ABC三要素组成.认真阅读过<WCF技术剖析(卷1)>的读者相对会对这 ...

  6. WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]

    在<上篇>中,我通过使用Delegate的方式解决了服务调用过程中的异常处理以及对服务代理的关闭.对于<WCF技术剖析(卷1)>的读者,应该会知道在第7章中我通过类似于AOP的 ...

  7. 虚拟网卡技术-VETH、MACVLAN、IPVLAN

    Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...

  8. WCF技术剖析之二十一:WCF基本异常处理模式[中篇]

    通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultException异常),其相关的错误信息仅仅限于服务端可见,并不会被WC ...

  9. BAT解密:互联网技术发展之路(5)- 开发层技术剖析

    BAT解密:互联网技术发展之路(5)- 开发层技术剖析 1. 开发框架 在系列文章的第2篇"BAT解密:互联网技术发展之路(2)- 业务如何驱动技术发展"中我们深入分析了互联网业务 ...

  10. [OS复习]虚拟存储管理技术 1

    1.问题的引入 简单存储:要求将一个进程所需的程序和数据全部装入内存方可执行.这样的系统存在两个很严重的问题.其一,对于大进程,如果其所需内存空间超过了内存的最大容量,则无法运行.其二,对于多道程序系 ...

最新文章

  1. 手动将本地jar添加到Maven仓库
  2. 开盘即破发,网易有道赴美上市,继续发力在线教育
  3. mysql -uroot -proot tc -e select * from merchandise limit 1这个-E的命令作用是什么,用来什么什么的?
  4. 安装hadoop-2.3.0-cdh5.1.2全过程
  5. elementUI使用
  6. 用border做三角形
  7. VMware VSAN 高级参数介绍(测试用)
  8. JavaScript使用正则表达
  9. linux 内核参数分析,linux 内核参数VM调优 之 参数调节和场景分析
  10. 多线程 空值线程数_跳槽涨薪季面试题之多线程(三)
  11. 医疗物联网的定义的业务场景
  12. 解决:删除文件时“文件正在使用”不能完成
  13. 现代软件工程 第一章 【概论】练习与讨论 王旭阳(2,3,4)
  14. adb模拟按键home_adb命令中 模拟按键 KeyCode 部分详解
  15. Java job interview:项目开发小组成员网站数据访问层设计
  16. 非LL(1)文法到LL(1)文法的等价变换
  17. 在mysql中如何建立性别约束_在Access2010数据库中,要在表中建立“性别”字段,并按与要求用逻辑值表示,其数据类型应当是()_学小易找答案...
  18. CSS中设置字体样式
  19. 【UE4从零开始 083】体积光照贴图
  20. 第一序列任小粟的能力_第一序列全本免费阅读-第一序列小说精校版

热门文章

  1. 分析Redis集群原理
  2. 黑帽seo技术大揭秘
  3. java 二叉树详解 + 实现代码
  4. AD9833介绍与应用(C语言实现)
  5. 财务 - 注册会计师
  6. Docker搭建rtmp视频直播
  7. ceph纠删码性能测试
  8. 前端预览PDF:PDFObject、PDF.js
  9. python免费教程发布页
  10. jaxen-1.1-beta-6.jar的用处