CN101281457B - 虚拟麦克风模拟器与方法 - Google Patents

虚拟麦克风模拟器与方法 Download PDF

Info

Publication number
CN101281457B
CN101281457B CN2008100997274A CN200810099727A CN101281457B CN 101281457 B CN101281457 B CN 101281457B CN 2008100997274 A CN2008100997274 A CN 2008100997274A CN 200810099727 A CN200810099727 A CN 200810099727A CN 101281457 B CN101281457 B CN 101281457B
Authority
CN
China
Prior art keywords
microphone
array
virtual
data
virtual microphone
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008100997274A
Other languages
English (en)
Other versions
CN101281457A (zh
Inventor
李志强
司刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VIA Technologies (China) Inc.
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority to CN2008100997274A priority Critical patent/CN101281457B/zh
Publication of CN101281457A publication Critical patent/CN101281457A/zh
Application granted granted Critical
Publication of CN101281457B publication Critical patent/CN101281457B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种虚拟麦克风模拟器与方法,将麦克风阵列转化成音频应用程序皆能使用的虚拟非阵列麦克风,以增强麦克风阵列硬件设备应用能力。而虚拟麦克风模拟器包括虚拟麦克风驱动模块、虚拟麦克风服务模块与控制界面模块。分别用以建立虚拟非阵列麦克风,处理麦克风阵列数据以及设定虚拟麦克风模拟器。本发明所述的虚拟麦克风模拟器与方法,增强了麦克风阵列硬件设备应用能力,并简化了用户的使用。

Description

虚拟麦克风模拟器与方法
技术领域
本发明提出一个虚拟麦克风模拟器与方法,使得音频应用程序也可以使用符合微软麦克风阵列规格的硬件设备。
背景技术
利用多个麦克风单元所集合而成麦克风阵列(MicrophoneArray)硬件设备,由于声音到达各麦克风单元的时间及方位不同,通过对音频数据的运算处理,可以得到比一般单一麦克风设备更好的语音品质。
除了在硬件上需要使用麦克风阵列设备之外,操作系统以及应用程序(例如M SN messenger、Skype等语音聊天程序)也必须支持这种麦克风阵列的硬件规格;因此应用程序必须通过微软新操作系统(Windows Vista)中定义的特殊编制处理方式“核心音频应用程序接口(Core Audio API)”来打开麦克风阵列硬件设备,而后使用新定义的特殊函数接口,例如DirectX介质物件(DirectX Media Object,DMO),来取得设备的信息(例如位置、麦克风参数等等)及收集麦克风阵列所接收到的多语音数据,并进行数据的处理,以得到音质较好的语音信息。
但是由于使用麦克风阵列需要采用微软新定义的特殊程序接口,导致之前的诸多应用程序无法使用麦克风阵列硬件设备,因此限制了麦克风阵列硬件设备的推广与应用。缺点整理如下:
1.当今大部分的语音应用程序软件(例如MSN messenger、Skype)不支持麦克风阵列的硬件设备,所以无法使用麦克风阵列;但是舍弃传统音频软件接口(例如WaveInXXX),而使用核心音频应用程序接口和DMO接口技术再开发新版本的应用程序来支持麦克风阵列的使用,无疑又会增加软件开发的成本。
2.对于已支持麦克风阵列的不同应用软件而言,其各采用的控制方式与演算法相互独立与麦克风阵列相关的设定也不同,导致用户要适应不同的使用程序。
3.麦克风阵列作为微软新的音频设备,日后必定会有更进一步的功能上增强,则必须将各应用程序一一更新,不但增加了软件开发的成本,也拉长软件开发的周期。
发明内容
本发明所提出增强麦克风阵列硬件设备应用能力的虚拟麦克风模拟器与方法,即是用来解决先前技术所面临到的问题。
为此,本发明提出了一种虚拟麦克风模拟器,适用于一计算机系统,产生一虚拟非阵列麦克风,音频应用程序通过虚拟非阵列麦克风访问麦克风阵列,该虚拟麦克风模拟器包括一虚拟麦克风服务模块,监测该计算机系统是否使用麦克风阵列,送出通知,并接收和处理麦克风阵列采集的阵列数据以将阵列数据转换成一非阵列麦克风数据;该虚拟麦克风模拟器还包括一虚拟麦克风驱动模块,与虚拟麦克风服务模块进行通信,当虚拟麦克风服务模块通知计算机系统使用麦克风阵列时,该虚拟麦克风驱动模块接收非阵列麦克风数据,并对非阵列麦克风数据实现一过滤器处理,并将处理后的非阵列麦克风数据传输给一操作系统,以建立虚拟非阵列麦克风,其中,该虚拟麦克风驱动模块操作在该操作系统的一核心模式内。
另外,本发明还提出一种虚拟麦克风方法,产生一虚拟非阵列麦克风,使音频应用程序得以使用一麦克风阵列,包括:由一虚拟麦克风服务模块侦测计算机系统,当计算机系统使用麦克风阵列时,送出通知,并接收和处理麦克风阵列采集的阵列数据以将阵列数据转换成一非阵列麦克风数据;以及当接收到来自一虚拟麦克风服务模块关于计算机系统使用麦克风阵列的通知时,由虚拟麦克风驱动模块接收非阵列麦克风数据,并对非阵列麦克风数据实现一过滤器处理,并将处理后的非阵列麦克风数据传输给一操作系统,以建立虚拟非阵列麦克风,其中,该虚拟麦克风驱动模块操作在该操作系统的一核心模式内。
本发明所述的虚拟麦克风模拟器与方法,增强了麦克风阵列硬件设备应用能力,并简化了用户的使用。
附图说明
图1为在计算机系统中音频应用程序通过虚拟麦克风模拟器来使用麦克风阵列的关系图。
图2为本发明的虚拟麦克风模拟器一实施例的示意图。
图3为说明虚拟麦克风驱动模块运作情形的实施例的示意图。
图4为本发明的虚拟麦克风模拟器模拟虚拟麦克风的方法的一实施例流程图。
附图中符号说明如下:
10:音频应用程序
110:麦克风阵列
112:核心音频应用程序接口和DMO接口
114、124:系统音频零组件
116:麦克风阵列驱动程序
122:非阵列麦克风接口
126:虚拟麦克风驱动模块
128:虚拟麦克风服务模块
24:虚拟麦克风模拟器
242:控制界面模块
302:数据缓冲区
304:WaveCyclic
306:拓扑。
具体实施方式
图1为在计算机系统中音频应用程序通过虚拟麦克风模拟器来使用麦克风阵列的关系图。音频应用程序10,尤其是语音通讯程序(例如MSN messenger、Skype等等)仅支持非阵列麦克风接口122,所以无法直接使用麦克风阵列110下的核心音频应用程序接口和DMO接口112来打开麦克风阵列及处理数据。
针对使用麦克风阵列110的计算机系统,本发明在操作系统中提供相关功能给麦克风阵列110,由麦克风阵列驱动程序116驱动系统音频零组件114,通过核心音频应用程序接口和DMO接口112将数据传递给虚拟麦克风服务模块128,再进一步传递给系统音频零组件124。计算机系统中的音频应用程序10仍旧使用非阵列麦克风接口122与系统音频零组件124进行沟通。其中麦克风阵列所采集的阵列数据可由虚拟麦克风服务模块转换成非阵列麦克风数据(也就是现今一般音频应用程序10所能操作的,非阵列麦克风接口122可直接处理的麦克风数据格式)。在虚拟麦克风模拟器的虚拟麦克风驱动模块126与虚拟麦克风服务模块128的协助下,音频应用程序10就相当于直接使用了一个虚拟非阵列麦克风,却拥有麦克风阵列110的高音频品质。
其中,虚拟麦克风服务模块128为工作于操作系统的用户模式(user mode)空间的服务程序,而虚拟麦克风驱动模块126则是运行在操作系统标准定义的核心模式(kernel mode)空间的窗口驱动模型(windows driver model,WDM)驱动程序。因为是操作系统标准定义的核心模式空间(操作系统的驱动程序也运行在此核心模式空间内),虚拟麦克风驱动模块运行于此,才能使得任何应用程序皆可使用此虚拟麦克风模拟器。
图2为本发明的虚拟麦克风模拟器的一实施例的示意图。其中虚拟麦克风模拟器24包含控制界面模块242、虚拟麦克风服务模块128、虚拟麦克风驱动模块126。如图1所示,麦克风阵列110采集的阵列数据由麦克风阵列驱动程序(图1的116)驱动系统音频零组件(图1的114),通过核心音频应用程序接口和DMO接口(图1的112)将阵列数据传递给虚拟麦克风服务模块128。
虚拟麦克风服务模块128是一个操作在操作系统的用户模式内的标准服务程序,负责数据的接收与处理,并和虚拟麦克风驱动模块126进行通信。还包括侦测麦克风阵列硬件是否已存在于计算机系统中,并通知虚拟麦克风驱动模块。
更进一步的说明,虚拟麦克风服务模块128通过操作系统定义给麦克风阵列的特殊编程接口(例如核心音频应用程序接口和DMO接口)来接收麦克风阵列中多个麦克风所采集的阵列数据(例如相位、范围等等),并进行麦克风阵列的控制,例如数据的输入/输出。而在麦克风阵列取得的数据处理上,包括使用各种应用演算法,包括麦克风阵列演算法(Microphone Arrayalgorithm)、噪声抑制(Noise Suppression,NS)处理、自动增益控制(Automatic Gain Control,AGC)、回音消除(Acoustic EchoCancellation,AEC)处理等等,最后转换成符合非阵列麦克风格式的非阵列麦克风数据,再发送给虚拟麦克风驱动模块126。
虚拟麦克风驱动模块126是一个操作在操作系统的核心模式内的驱动程序,在收到麦克风阵列110存在于计算机系统的信息后,根据虚拟麦克风服务模块128发送而来的非阵列麦克风数据建立一个虚拟的非阵列麦克风设备,使得操作系统与应用软件可以用访问普通麦克风设备的方式访问麦克风阵列110。虚拟麦克风驱动模块126还实现与系统音频零组件124(图1)的数据交换,并建立非分页存储器缓冲(none paged memory buffer)以接收及发送数据,实现与虚拟麦克风服务模块128的数据交换。
控制界面模块242负责对麦克风阵列数据处理的设定,以及演算法或其他功能(例如噪声抑制、回音消除等)的设定,当需要对该阵列数据的处理进行设定时,提供给用户一个控制虚拟麦克风模拟器的操作界面。还能开启或关闭虚拟麦克风模拟器,并显示麦克风阵列110的信息与状态等参数。而经由控制界面模块242所设定的功能,则由虚拟麦克风服务模块128执行。
图3为具体说明虚拟麦克风驱动模块126运作情形的实施例。虚拟麦克风服务模块128将非阵列麦克风数据传递至虚拟麦克风驱动模块126的非分页存储器缓冲(none paged memorybuffer)的数据缓冲区302,再通过实现麦克风设备的接口,即微软操作系统内现存定义的零组件接口来与操作系统联系:如WaveCyclic 304,其连接至数据缓冲区302,实现基于窗口驱动模型(WDM)WaveCyclic接口驱动程序的小型接口波形过滤器(miniport wave filter),微软定义的windows体系结构是以过滤器filter为基础的,虚拟麦克风驱动模块126通过WaveCyclic 304实现与系统音频零组件124的数据传输和交换;再如拓扑(topology)306,其连接至数据缓冲区302,实现小型接口拓扑过滤器(miniporttopology filter),对非阵列麦克风数据实现诸如音量控制等调节功能,拓扑306输出至WaveCyclic 304;WaveCyclic 304作为接口将非阵列麦克风数据传递至系统音频零组件124、非阵列麦克风接口122最后提供给音频应用程序10使用。对于音频应用程序而言,其处理的数据是非阵列麦克风数据,而这些非阵列麦克风数据屏蔽掉了麦克风阵列110硬件的细节,则在虚拟麦克风驱动模块126看来,就是在驱动一个普通的麦克风设备,即虚拟非阵列麦克风设备。
图4为本发明的虚拟麦克风模拟器虚拟麦克风的方法流程图实施例,可对应参照图3。
首先虚拟麦克风服务模块128必须先侦测计算机系统是否使用麦克风阵列(S400),倘若为是,则获取麦克风阵列参数(例如几何形状、尺寸、角度等信息)(S402)。通知虚拟麦克风驱动模块126以建立虚拟非阵列麦克风(S404),判断是否有来自应用程序的数据请求(S406);倘若有,则接收来自麦克风阵列的阵列数据(S408);倘若否,则可等待一预定时间(S418)或直接回传至开始阶段。接着虚拟麦克风服务模块128进行麦克风阵列演算法(Microphone Array algorithm)、噪声抑制(Noise Suppression,NS)处理、自动增益控制(Automatic Gain Control,AGC)、回音消除(Acoustic Echo Cancellation,AEC)处理等数据处理方式(S410)。将处理后产生的非阵列麦克风数据传递至虚拟麦克风驱动模块126的数据缓冲区302(S412),虚拟麦克风驱动模块126借此建立虚拟非阵列麦克风,虚拟非阵列麦克风读取数据缓冲区302后,通过WaveCyclic接口304输出至系统音频零组件124(S414),并判断是否结束输出(S416),如果是则返回至步骤S404,若否则返回至步骤S408。
因此,本发明提供的虚拟麦克风的方法,使不具备麦克风阵列的应用程序编程接口(API)的音频应用程序得以使用麦克风阵列硬件。当该计算机系统使用该麦克风阵列时,虚拟麦克风服务模块128接收并处理来自该麦克风阵列采集的阵列数据,通过处理,将阵列数据转换为非阵列麦克风数据,并送出通知给虚拟麦克风驱动模块126,以通知计算机系统使用该麦克风阵列110。随后虚拟麦克风服务模块128将非阵列麦克风数据传送给虚拟麦克风驱动模块126,以建立虚拟非阵列麦克风。其中的非阵列麦克风数据为一般应用程序可直接使用的数据。
同时也可使用控制界面模块来设定麦克风阵列的工作模式,包括麦克风阵列演算法(Microphone Array algorithm)、噪声抑制处理(Noise suppression,NS)、自动增益控制(AutomaticGain Control,AGC)与回音消除(Acoustic Echo Cancellation,AEC)的控制等等,并控制虚拟麦克风模拟器的开关。而所设定的工作模式则由虚拟麦克风服务模块128对应处理。
本发明所提出的虚拟麦克风模拟器在计算机系统中建立一个虚拟的非阵列麦克风硬件设备,而任何应用程序都可以传统的方式来打开并使用此虚拟非阵列麦克风。虚拟麦克风模拟器负责处理实际麦克风阵列的相关问题,例如配置、演算法等等,再将数据转换过的数据以非阵列的普通麦克风数据的形式输出至相关的应用程序;得以免去了应用程序直接面对麦克风阵列所需处理的细节。因此,音频应用程序既能使用到麦克风阵列,单一操作界面也可简化用户的使用;由于麦克风阵列的相关问题的处理已经由虚拟麦克风模拟器完成,因此应用程序不会因处理麦克风阵列的算法不同而不同,从而也不会造成用户的不便;倘若日后在麦克风阵列上有功能更新,也仅需更新此虚拟麦克风模拟器即可。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (9)

1.一种虚拟麦克风模拟器,其特征在于,适用于一计算机系统,产生一虚拟非阵列麦克风,一音频应用程序通过该虚拟非阵列麦克风访问一麦克风阵列,包括:
一虚拟麦克风服务模块,监测该计算机系统是否使用该麦克风阵列,送出通知,并接收和处理该麦克风阵列采集的阵列数据以将该阵列数据转换成一非阵列麦克风数据;以及
一虚拟麦克风驱动模块与该虚拟麦克风服务模块进行通信,当该虚拟麦克风服务模块通知该计算机系统使用该麦克风阵列时,该虚拟麦克风驱动模块接收该非阵列麦克风数据,并对该非阵列麦克风数据实现一过滤器处理,并将处理后的该非阵列麦克风数据传输给一操作系统,以建立该虚拟非阵列麦克风,
其中,该虚拟麦克风驱动模块操作在该操作系统的一核心模式内。
2.根据权利要求1所述的虚拟麦克风模拟器,其特征在于,该虚拟麦克风服务模块通过麦克风阵列演算法、噪声抑制处理、自动增益控制及回音消除将该阵列数据转换成该非阵列麦克风数据。
3.根据权利要求1所述的虚拟麦克风模拟器,其特征在于,该虚拟麦克风服务模块操作在该操作系统的一用户模式内。
4.根据权利要求1所述的虚拟麦克风模拟器,其特征在于,还包括一控制界面模块,设定该虚拟麦克风服务模块,而使该虚拟麦克风服务模块依据该控制界面模块的设定,处理该阵列数据。
5.根据权利要求4所述的虚拟麦克风模拟器,其特征在于,该控制界面模块还控制该虚拟麦克风模拟器的开关。
6.一种虚拟麦克风方法,其特征在于,产生一虚拟非阵列麦克风,使音频应用程序得以使用一麦克风阵列,包括:
由一虚拟麦克风服务模块侦测一计算机系统,当该计算机系统使用该麦克风阵列时,送出通知,并接收和处理该麦克风阵列采集的阵列数据以将该阵列数据转换成一非阵列麦克风数据;以及
当接收到来自该虚拟麦克风服务模块关于该计算机系统使用该麦克风阵列的通知时,由一虚拟麦克风驱动模块接收该非阵列麦克风数据,并对该非阵列麦克风数据实现一过滤器处理,并将处理后的该非阵列麦克风数据传输给一操作系统,以建立该虚拟非阵列麦克风,
其中,该虚拟麦克风驱动模块操作在该操作系统的一核心模式内。
7.根据权利要求6所述的虚拟麦克风方法,其特征在于,该虚拟麦克风服务模块通过麦克风阵列演算法、噪声抑制处理、自动增益控制与回音消除将该阵列数据转换成该非阵列麦克风数据。
8.根据权利要求6所述的虚拟麦克风方法,其特征在于,还包括当需要对该阵列数据的处理进行设定时,利用一个控制界面模块设定该虚拟麦克风服务模块,而使该虚拟麦克风服务模块依据该控制界面模块的设定,处理该阵列数据。
9.根据权利要求8所述的虚拟麦克风方法,其特征在于,该控制界面模块还控制该虚拟麦克风模拟器的开关。
CN2008100997274A 2008-06-02 2008-06-02 虚拟麦克风模拟器与方法 Active CN101281457B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100997274A CN101281457B (zh) 2008-06-02 2008-06-02 虚拟麦克风模拟器与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100997274A CN101281457B (zh) 2008-06-02 2008-06-02 虚拟麦克风模拟器与方法

Publications (2)

Publication Number Publication Date
CN101281457A CN101281457A (zh) 2008-10-08
CN101281457B true CN101281457B (zh) 2010-08-18

Family

ID=40013947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100997274A Active CN101281457B (zh) 2008-06-02 2008-06-02 虚拟麦克风模拟器与方法

Country Status (1)

Country Link
CN (1) CN101281457B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799409A (zh) * 2012-07-31 2012-11-28 深圳市同洲电子股份有限公司 语音输入的方法、装置和终端
CN104407859B (zh) * 2014-11-19 2017-11-10 惠州Tcl移动通信有限公司 一种模拟音频通道的模拟器及其实现方法
CN106297815B (zh) * 2016-07-27 2017-09-01 武汉诚迈科技有限公司 一种语音识别场景中回音消除的方法
CN114708884A (zh) * 2022-04-22 2022-07-05 歌尔股份有限公司 一种声音信号处理方法、装置、音频设备及存储介质

Also Published As

Publication number Publication date
CN101281457A (zh) 2008-10-08

Similar Documents

Publication Publication Date Title
CN106910500B (zh) 对带麦克风阵列的设备进行语音控制的方法及设备
CN101281457B (zh) 虚拟麦克风模拟器与方法
CN107622652A (zh) 家电系统的语音控制方法与家电控制系统
CN106385347A (zh) 一种家电设备控制方法和装置
CN108597507A (zh) 远场语音功能实现方法、设备、系统及存储介质
CN103731707A (zh) 移动终端设备控制智能电视端语音输入的方法及系统
CN107797460A (zh) 基于智能音箱的家电语音控制方法及相关产品
CN105427866A (zh) 一种语音处理方法、装置及拾音电路
WO2019196472A1 (zh) 数据传输方法、装置及数据转换器
CN205987367U (zh) 一种基于分布式麦克风的拾音装置
CN107680594A (zh) 一种分布式智能语音采集识别系统及其采集识别方法
CN208124555U (zh) 一种语音操控的空调器
CN104968057A (zh) 一种智能硬件设备自动联网的方法及系统
EP2530998A1 (en) Home gateway and method adaptive for universal serial bus (usb) wireless data card
CN208538475U (zh) 一种智能机器人
CN110971968A (zh) 一种智能机顶盒系统
US11659325B2 (en) Method and system for performing voice processing
CN204887486U (zh) 一种智能硬件设备自动联网的系统
CN106584486A (zh) 一种基于语音识别的工业机器人控制系统和方法
CN109872719A (zh) 一种分级式智能语音系统及其语音处理方法
CN106210978A (zh) 一种声控麦克风
CN102802237B (zh) 数据转发控制方法以及无线集中控制设备
CN102364439B (zh) 分布式处理系统的窗口快速移动方法及装置
CN201550082U (zh) 通用自动增益控制装置
CN206096787U (zh) 一种声控智能家居系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: VIA TECHNOLOGIES, INC.

Free format text: FORMER OWNER: WEISHENG ELECTRONIC CO. LTD.

Effective date: 20111230

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: TAIWAN, CHINA TO: 100084 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20111230

Address after: 100084 Beijing City, Haidian District Chinese Zhongguancun Road No. 1 Building No. 7 hospital via Chinese core building

Patentee after: VIA Technologies (China) Inc.

Address before: Taiwan County, Taipei, China

Patentee before: Weisheng Electronic Co., Ltd.