CN113220261A - 一种基于虚拟麦克风的音频数据获取方法及终端设备 - Google Patents
一种基于虚拟麦克风的音频数据获取方法及终端设备 Download PDFInfo
- Publication number
- CN113220261A CN113220261A CN202110330821.1A CN202110330821A CN113220261A CN 113220261 A CN113220261 A CN 113220261A CN 202110330821 A CN202110330821 A CN 202110330821A CN 113220261 A CN113220261 A CN 113220261A
- Authority
- CN
- China
- Prior art keywords
- virtual microphone
- audio data
- microphone
- hal
- application program
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/16—Sound input; Sound output
- G06F3/165—Management of the audio stream, e.g. setting of volume, audio stream path
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Telephone Function (AREA)
Abstract
本发明实施例公开了一种基于虚拟麦克风的音频数据获取方法及终端设备,应用于终端设备技术领域,可解决现有技术中如果真实麦克风已经被某一应用程序占用,那么其他的应用程序就无法使用真实麦克风的问题。该方法应用于Android操作系统的终端设备,包括:通过至少一个应用程序接收获取音频数据的指令;根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;将至少一个虚拟麦克风注册到虚拟麦克风HAL,虚拟麦克风HAL为在Android操作系统中的服务层预先创建的;通过虚拟麦克风HAL为至少一个应用程序获取目标音频数据。
Description
技术领域
本发明实施例涉及终端设备技术领域,尤其涉及一种基于虚拟麦克风的音频数据获取方法及终端设备。
背景技术
目前,终端设备中的应用程序在获取音频数据的时候,通常需要调用真实麦克风去采集音频信息,但是一个终端设备中真实麦克风的数量有限,当多个应用程序需要获取不同来源的音频数据时,如果真实麦克风已经被某一应用程序占用,那么其他的应用程序就无法使用真实麦克风。
发明内容
本发明实施例提供一种基于虚拟麦克风的音频数据获取方法及终端设备,用以解决现有技术中如果真实麦克风已经被某一应用程序占用,那么其他的应用程序就无法使用真实麦克风的问题。为了解决上述技术问题,本发明实施例是这样实现的:
第一方面,提供一种基于虚拟麦克风的音频数据获取方法,应用于安卓Android操作系统的终端设备,所述方法包括:
通过至少一个应用程序接收获取音频数据的指令;
根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;
将所述至少一个虚拟麦克风注册到虚拟麦克风HAL,所述虚拟麦克风HAL为在所述Android操作系统中的服务层预先创建的;
通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据,包括:
通过所述虚拟麦克风HAL获取所述目标音频数据;
将所述目标音频数据由所述至少一个虚拟麦克风分别转发至对应的应用程序,以使得所述至少一个应用程序获取到所述目标音频数据。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述通过所述虚拟麦克风HAL获取目标音频数据,包括:
通过所述虚拟麦克风HAL获取第一音频数据;
通过所述虚拟麦克风HAL获取所述至少一个应用程序的音频参数,所述音频参数包括以下至少一种:音频格式、音频时长、声道数量;
根据每个应用程序对应的音频参数,通过所述虚拟麦克风HAL对所述第一音频数据进行处理,得到针对所述每个应用程序处理后的所述目标音频数据。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述通过所述虚拟麦克风HAL获取目标音频数据,包括:
通过所述虚拟麦克风HAL获取第一音频数据;
通过所述虚拟麦克风HAL获取针对所述至少一个应用程序设置的声音特效参数;
根据针对每个应用程序设置的声音特效参数,通过所述虚拟麦克风HAL对所述第二音频数据进行处理,得到针对所述每个应用程序处理后的所述目标音频数据。
作为一种可选的实施方式,在本发明实施例的第一方面中,通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据之前,所述方法还包括:
将所述虚拟麦克风HAL注册至Android操作系统中的系统运行库层中的麦克风服务;
通过所述虚拟麦克风HAL接收所述麦克风服务发送的共享内存的地址。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据,包括:
根据所述共享内存的地址,通过所述虚拟麦克风HAL从所述共享内存中为所述至少一个应用程序获取所述目标音频数据。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据之后,所述方法还包括:
在所述至少一个应用程序中输出所述目标音频数据。
作为一种可选的实施方式,在本发明实施例的第一方面中,在所述Android操作系统中预置虚拟麦克风功能,所述根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,包括:
响应于所述指令,检测所述虚拟麦克风功能是否启动;
若所述虚拟麦克风功能启动,则根据所述指令为所述至少一个应用程序在所述Android操作系统中的服务层创建所述至少一个虚拟麦克风。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,包括:
响应于所述指令,控制第一应用程序通过应用程序编程接口API调用麦克风打开函数,以尝试启用麦克风获取音频数据,所述第一应用程序为所述至少一个应用程序中的一个应用程序;
在确定实体麦克风已被第二应用程序占用的情况下,为所述第一应用程序在所述Android操作系统中的服务层创建第一虚拟麦克风,所述第二应用程序为所述至少一个应用程序中与所述第一应用程序不同的应用程序。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述在确定实体麦克风已被第二应用程序占用的情况下,为所述第一应用程序在所述Android操作系统中的服务层创建第一虚拟麦克风,包括:
在确定所述实体麦克风已被所述第二应用程序占用的情况下,检测所述虚拟麦克风功能是否启动;
若所述虚拟麦克风功能启动,则根据所述指令为所述第一应用程序创建所述第一虚拟麦克风;
若所述虚拟麦克风功能未启动,则启动所述虚拟麦克风功能,并根据所述指令为所述第一应用程序创建所述第一虚拟麦克风。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述将所述至少一个虚拟麦克风注册到虚拟麦克风HAL,包括:
通过所述至少一个虚拟麦克风向所述虚拟麦克风HAL发送注册请求消息;
若某一虚拟麦克风接收到所述虚拟麦克风HAL发送的注册成功消息,则确定将所述某一虚拟麦克风成功注册到所述虚拟麦克风HAL。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述通过所述至少一个虚拟麦克风向所述虚拟麦克风HAL发送注册请求消息之后,所述方法还包括:
每个虚拟麦克风发送的所述注册请求消息中携带有所述每个虚拟麦克风的标识;
在所述虚拟麦克风HAL中保存所述至少一个虚拟麦克风中所述每个虚拟麦克风的标识。
作为一种可选的实施方式,在本发明实施例的第一方面中,所述将所述至少一个虚拟麦克风注册到虚拟麦克风HAL之后,所述方法还包括:
通过所述虚拟麦克风HAL将所述至少一个虚拟麦克风对象回调给麦克风软件层,以通知所述至少一个应用程序对应的虚拟麦克风创建成功。
第二方面,提供一种终端设备,该终端设备包括:收发模块,用于通过至少一个应用程序接收获取音频数据的指令;
创建模块,用于根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;
处理模块,用于将所述至少一个虚拟麦克风注册到虚拟麦克风HAL,所述虚拟麦克风HAL为在所述Android操作系统中的服务层预先创建的;
获取模块,用于通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据。
第三方面,提供一种终端设备,包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明实施例第一方面中的基于虚拟麦克风的音频数据获取方法。
第四方面,提供一种计算机可读存储介质,其存储计算机程序,所述计算机程序使得计算机执行本发明实施例第一方面中的基于虚拟麦克风的音频数据获取方法。所述计算机可读存储介质包括ROM/RAM、磁盘或光盘等。
第五方面,提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面的任意一种方法的部分或全部步骤。
第六方面,提供一种应用发布平台,所述应用发布平台用于发布计算机程序产品,其中,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面的任意一种方法的部分或全部步骤。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例中,配置有Android操作系统的终端设备可以通过至少一个应用程序接收获取音频数据的指令,根据指令为每个应用程序创建一个虚拟麦克风,将至少一个虚拟麦克风注册到虚拟麦克风HAL,再通过虚拟麦克风HAL获取音频数据。通过该方案,每个应用程序都对应一个虚拟麦克风,这样当真实麦克风被某个应用程序占用的时候,终端设备的其他应用程序都可以通过对应的虚拟麦克风从注册的虚拟麦克风HAL中获取音频数据,并且使用虚拟麦克风代替真实麦克风,这样可以在不影响当前正在使用真实麦克风的应用程序的情况下,获取到音频数据。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于虚拟麦克风的音频数据获取方法的流程示意图一;
图2是本发明实施例提供的一种Android操作系统的架构示意图;
图3是本发明实施例提供的一种基于虚拟麦克风的音频数据获取方法的内部实现示意图一;
图4是本发明实施例提供的一种基于虚拟麦克风的音频数据获取方法的内部实现示意图二;
图5是本发明实施例提供的一种基于虚拟麦克风的音频数据获取方法的流程示意图二;
图6是本发明实施例提供的一种终端设备的结构示意图一;
图7是本发明实施例提供的一种终端设备的结构示意图二;
图8是本发明实施例提供的一种终端设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一应用程序和第二应用程序等是用于区别不同的应用程序,而不是用于描述应用程序的特定顺序。
本发明实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
相关技术中,终端设备中的应用程序在获取音频数据的时候,通常需要调用真实麦克风去采集音频信息,但是一个终端设备中真实麦克风的数量有限,当多个应用程序需要获取不同来源的音频数据时,如果真实麦克风已经被某一应用程序占用,那么其他的应用程序就无法使用真实麦克风。
为了解决上述问题,本发明实施例提供一种基于虚拟麦克风的音频数据获取方法及终端设备,配置有Android操作系统的终端设备可以通过至少一个应用程序接收获取音频数据的指令,根据指令为每个应用程序创建一个虚拟麦克风,将至少一个虚拟麦克风注册到虚拟麦克风HAL,再通过虚拟麦克风HAL获取音频数据。通过该方案,每个应用程序都对应一个虚拟麦克风,这样当真实麦克风被某个应用程序占用的时候,终端设备的其他应用程序都可以通过对应的虚拟麦克风从注册的虚拟麦克风HAL中获取音频数据,使用虚拟麦克风代替真实麦克风,这样可以在不影响当前正在使用真实麦克风的应用程序的情况下,获取到音频数据。
本发明实施例涉及的终端设备可以为直播设备,该直播设备中包括主机和与主机电连接的直播显示屏,可选的,该直播设备还可以包括有摄像头、麦克风、扬声器等器件,本发明实施例不作限定。
本发明实施例涉及的终端设备还可以为手机、平板电脑、笔记本电脑、掌上电脑、车载终端设备、可穿戴设备、超级移动个人计算机(Ultra-Mobile Personal Computer,UMPC)、上网本或者个人数字助理(Personal Digital Assistant,PDA)等电子设备。其中,可穿戴设备可以为智能手表、智能手环、手表电话、智能脚环、智能耳环、智能项链、智能耳机等,本发明实施例不作限定。
本发明实施例提供的基于虚拟麦克风的音频数据获取方法的执行主体可以为上述的终端设备,也可以为该终端设备中能够实现该基于虚拟麦克风的音频数据获取方法的功能模块和/或功能实体,具体的可以根据实际使用需求确定,本发明实施例不作限定。下面以终端设备为例,对本发明实施例提供的基于虚拟麦克风的音频数据获取方法进行示例性的说明。
本发明实施例提供的基于虚拟麦克风的音频数据获取方法,可以应用于用户使用终端设备需要获取音频数据的场景。
实施例一
如图1所示,本发明实施例提供一种基于虚拟麦克风的音频数据获取方法,该方法可以包括下述步骤:
101、通过至少一个应用程序接收获取音频数据的指令。
在本发明实施例中,当用户在使用终端设备的应用程序的时候,可能会需要获取音频数据,此时用户会在应用程序中进行触控操作,以使得终端设备接收到获取音频数据的指令。
可选的,用户的触控操作可以包括:用户在应用程序中点击获取音频数据的控件;或者,用户在在应用程序中输入预设文本信息或者预设手势信息,该预设文本信息或者预设手势信息可以用于指示终端设备获取音频数据。
102、根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风。
在本发明实施例中,终端设备可以在Android操作系统中的服务层中创建至少一个虚拟麦克风。
其中,每个虚拟麦克风对应一个应用程序。
可选的,Android操作系统是一种基于Linux的自由及开放源代码的操作系统,主要应用于移动设备。Android操作系统采用了分层的架构,如图2所示,分别为应用程序层、应用程序框架层、系统运行库层、硬件抽象层以及Linux核心层,在系统运行库层中还包括运行环境。
可选的,应用程序层(Application)就是开发的应用程序,属于用户应用层面,其中具体可以包括:主程序、联系人、浏览器、其他小部件等。
可选的,应用程序框架层(Application Framework)就是开发人员可以完全访问应用程序所使用的应用程序编程接口(Application Programming Interface,API),也就是隐藏在每个应用程序后面的一系列的服务和系统。应用程序架构层的设计简化了应用程序重用机制,任何一个应用程序都可以发布各自的功能块,并且任何其它的应用程序都可以在遵循框架的安全性的基础上,使用其所发布的功能块。同样的,用户也可以通过该简化后的应用程序重用机制方便的替换应用程序组件。
其中,应用程序框架层至少可以包括:
(1)丰富可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),以及可嵌入的web浏览器等。
(2)内容提供器(Content Providers),可以使得应用程序访问另一个应用程序的数据(如联系人数据库),或者共享各自的数据。
(3)资源管理器(Resource Manager),可以提供非代码资源的访问,如本地字符串,图形,和布局文件(layout files)等。
(4)通知管理器(Notification Manager),可以使得应用程序在状态栏中显示自定义的提示信息。
(5)活动管理器(Activity Manager),可以用来管理应用程序的生命周期,并提供常用的导航回退功能。
可选的,系统运行库层(Libraries)包括一些C/C++库,这些库能被不同的应用组件使用。
其中,系统运行库层至少可以包括:
(1)系统C库:从伯克利软件套件(Berkeley Software Distribution,BSD)继承来的标准C系统函数库(Libc),系统C库为专门为基于嵌入式(embedded)Linux的设备定制的。
(2)媒体库:该媒体库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
(3)表层管理程序(Surface Manager):对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
(4)LibWebCore:web浏览器引擎,支持Android浏览器和一个可嵌入的web视图。
(5)SGL:底层的2D图形引擎。
(6)3D libraries:该库可以使用硬件3D加速或者使用高度优化的3D软加速。
(7)FreeType:位图(bitmap)和矢量(vector)字体显示。
(8)SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
需要说明的是,在系统运行库层中,还包括Android操作系统的运行环境(AndroidRuntime),java程序的运行需要java的核心包的支持,然后通过虚拟机来运行应用程序,运行环境中的核心库(Core Libraries)就相当于java的开发工具包(Java Developer Kit,JDK),是运行应用程序所需要的核心库;Dalvik虚拟机(DalvikVirtual Machine)就相当于Java虚拟机(Java Virtual Machine),是为Android开发的运行Android应用程序所需的虚拟机。
可选的,硬件抽象层(Hardware Abstraction Layer,HAL)是连接系统运行库层与Linux核心层的重要桥梁。HAL层可以屏蔽不同硬件设备的差异,为Android操作系统提供统一的设备访问接口。HAL层还可以隐藏设备的核心细节,Android操作系统将对硬件的实现方式分为用户空间和内核空间,HAL层位于用户空间,允许不公开源代码,并将设备相关的实现方式放在HAL层中实现,并以共享库的形式进行提供数据。
其中,HAL层可以包括多个功能模块,比如:麦克风功能模块(Mic)、蓝牙功能模块(Bluetooth)、摄像头功能模块(Camera)、传感器功能模块(Sensors)等。在本发明实施例中,虚拟麦克风、虚拟麦克风HAL均存在于HAL层中。
需要说明的是,本发明实施例中的Android操作系统中的服务层可以为HAL层。
可选的,Linux核心层(Linux Kernel)是Android操作系统的底层实现,提供核心系统服务,包括:安全、内存管理、进程管理、网络堆栈、驱动模型等。Linux核心层中还包括许多的驱动程序,比如:显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理,正是通过这些驱动程序来驱动我们设备上的硬件设备的。
综上,Android操作系统采用的分层架构,可以使用下层提供的服务为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化时,不会影响到上层。
可选的,根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,具体可以包括以下两种实现方式:
实现方式一:响应于指令,检测虚拟麦克风功能是否开启;若虚拟麦克风功能开启,则根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风。
在本发明实施例中,若在Android操作系统的HAL层中预置有虚拟麦克风功能,那么终端设备在接收到获取音频数据的指令之后,还可以检测虚拟麦克风功能是否启动;若虚拟麦克风功能处于启动状态,则根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风;若虚拟麦克风功能处于关闭状态,则启动虚拟麦克风功能,并根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风。
实现方式二:响应于指令,控制第一应用程序通过API调用麦克风打开函数,以尝试启用麦克风获取音频数据;在确定实体麦克风已被第二应用程序占用的情况下,为第一应用程序在Android操作系统中的服务层创建第一虚拟麦克风。
在本发明实施例中,终端设备通过第一应用程序接收到获取音频数据的指令之后,可以控制第一应用程序通过API调用麦克风打开函数,以开启麦克风;此时如果终端设备检测到第二应用程序在使用麦克风的时候,那么终端设备可以在服务层创建第一虚拟麦克风。
其中,第一应用程序和第二应用程序为至少一个应用程序中不同的两个应用程序,第一虚拟麦克风与第一应用程序对应。
可选的,API主要用于提供应用程序与开发人员基于某软件或硬件得以访问例程的能力,而又无需访问源代码,或理解内部工作机制的细节。API是一组数量繁多、较为复杂的函数和副程序,用户可以通过API完成很多操作,譬如“读取文件”、“显示菜单”、“在视窗中显示网页”等。操作系统的API可用来分配存储器或读取文件。API可以包括很多形式,比如函数、常量、变量与数据结构。
需要说明的是,麦克风打开函数是麦克风应用程序编程接口函数,主要用于打开麦克风,终端设备的真实麦克风和虚拟麦克风在实现是均需要该麦克风打开函数。在本发明实施例中,该麦克风打开函数可以是Mic.open函数。
进一步的,在确定实体麦克风已被第二应用程序占用的情况下,为第一应用程序在Android操作系统中的服务层创建第一虚拟麦克风,具体包括:在实体麦克风已被第二应用程序占用的情况下,检测虚拟麦克风功能是否启动;若虚拟麦克风功能启动,则根据指令为第一应用程序创建第一虚拟麦克风;若虚拟麦克风未启动,则启动虚拟麦克风功能,并根据指令为第一应用程序创建第一虚拟麦克风。
在本发明实施例中,终端设备还可以在检测到第二应用程序在使用麦克风的时候,检测虚拟麦克风功能是否启动;若虚拟麦克风功能处于启动状态,则根据指令为第一应用程序在Android操作系统中的服务层创建第一虚拟麦克风;若虚拟麦克风功能处于关闭状态,则启动虚拟麦克风功能,并根据指令为第一应用程序在Android操作系统中的服务层创建第一虚拟麦克风。
103、将至少一个虚拟麦克风注册到虚拟麦克风HAL。
在本发明实施例中,终端设备可以将至少一个虚拟麦克风注册到虚拟麦克风HAL中。
其中,虚拟麦克风HAL是预先在Android操作系统中的服务层创建的。
需要说明的是,每个应用程序都对应一个虚拟麦克风,终端设备将至少一个虚拟麦克风注册到虚拟麦克风HAL,并通过至少一个虚拟麦克风接收虚拟麦克风HAL提供的音频数据。虚拟麦克风HAL可以同时关联管理多个虚拟麦克风,即虚拟麦克风HAL可以同时向多个虚拟麦克风提供音频数据,再由虚拟麦克风发送至对应的应用程序,以使得多个应用程序播放同样的音频数据。
可选的,将至少一个虚拟麦克风注册到虚拟麦克风HAL,具体包括:通过至少一个虚拟麦克风向虚拟麦克风HAL发送注册请求消息;若某一虚拟麦克风接收到虚拟麦克风HAL发送的注册成功消息,则确定将某一虚拟麦克风成功注册到虚拟麦克风HAL。
在本发明实施例中,终端设备将至少一个虚拟麦克风注册到虚拟麦克风HAL的时候,可以通过至少一个虚拟麦克风向虚拟麦克风HAL发送注册请求消息,虚拟麦克风HAL接收到某一虚拟麦克风的注册请求消息之后,可以将该虚拟麦克风关联管理,并向该虚拟麦克风发送注册成功消息,这样该虚拟麦克风接收到注册成功消息之后,就可以说明该虚拟麦克风已经在虚拟麦克风HAL中注册成功,就可以接收到虚拟麦克风HAL发送的音频数据。
进一步的,通过至少一个虚拟麦克风向虚拟麦克风HAL发送注册请求消息之后,还可以包括:每个虚拟麦克风发送的注册请求消息中携带有每个虚拟麦克风的标识;在虚拟麦克风HAL中保存至少一个虚拟麦克风中每个虚拟麦克风的标识。
在本发明实施例中,终端设备通过某个虚拟麦克风向虚拟麦克风HAL发送的注册请求消息中,还可以包括:该虚拟麦克风的标识;并且,终端设备在虚拟麦克风HAL中保存该虚拟麦克风的标识,以使得在虚拟麦克风HAL中可以将每个虚拟麦克风更好的区分开。
可选的,将至少一个虚拟麦克风注册到虚拟麦克风HAL之后,还可以包括:通过虚拟麦克风HAL将至少一个虚拟麦克风对象回调给麦克风软件层,以通知至少一个应用程序对应的虚拟麦克风创建成功。
在本发明实施例中,终端设备在将至少一个虚拟麦克风注册到虚拟麦克风HAL之后,还可以通过API调用麦克风回调函数,将某个虚拟麦克风对象回调给麦克风软件层,以通知与该虚拟麦克风对应的应用程序,虚拟麦克风创建成功。
其中,麦克风回调函数为通过函数指针调用的函数。若将函数的指针,即函数的地址,作为参数传递给另一个函数,当该指针被用来调用其所指向的函数时,即成为回调函数,回调函数并非由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。在本发明实施例中,该麦克风回调函数可以为setPreviewCallback函数或者setPreviewCallbackWithBuffer函数。
104、通过虚拟麦克风HAL为至少一个应用程序获取目标音频数据。
在本发明实施例中,终端设备可以通过虚拟麦克风HAL为至少一个应用程序获取目标音频数据。
可选的,终端设备通过虚拟麦克风HAL获取音频数据,该音频数据可以是真实的麦克风采集的音频数据,也可以是通过虚拟麦克风HAL获取的本地音频数据。
可选的,通过虚拟麦克风HAL为至少一个应用程序获取目标音频数据,具体包括:将虚拟麦克风HAL注册至Android操作系统中的系统运行库层中的麦克风服务;并通过虚拟麦克风HAL接收麦克风服务发送的共享内存的地址;根据共享内存的地址,通过虚拟麦克风HAL从共享内存中为至少一个应用程序获取目标音频数据。
在本发明实施例中,终端设备可以将虚拟麦克风HAL注册至Android操作系统中的系统运行库层,并接收共享内存的地址,通过虚拟麦克风HAL从共享内存中获取目标音频数据。
其中,终端设备将虚拟麦克风HAL注册至Android操作系统中的系统运行库层之后,虚拟麦克风HAL就可以和麦克风服务关联,并与麦克风服务进行数据传输。
示例性的,如图3所示,假设本发明实施例中的终端设备为直播设备,那么该直播设备中可以安装有导播应用程序,该导播应用程序可以通过真实麦克风获取真实音频数据,也可以获取终端设备保存的音频资源,或者通过其他指定的音频源获取音频数据;该导播应用程序获取到音频资源之后,可以将这些音频资源存储到共享内存中,虚拟麦克风HAL通过系统运行库层中的麦克风服务从共享内存中获取音频数据,并将音频数据分发至每个虚拟麦克风,从而在应用程序中输出。
通过该可选的实现方式,终端设备可以将音频数据保存至共享内存中,这样虚拟麦克风HAL只需要从共享内存中获取音频数据,不需要重新采集音频数据,减少终端设备的操作流程,提高音频数据获取效率。
进一步的,导播应用程序获取真实音频数据的方式,可以包括:导播应用程序通过音频轨道(AudioTrack)获取音频数据(audiodata)。
其中,音频轨道(AudioTrack)用于录制以及处理音频;虚拟乐器通道(instrumenttrack)用于加载单声部乐器音源,可以省略导出音频的步骤,直接在音频效果器上面进行音频的处理。
示例性的,如图4所示为导播应用程序获取音频数据的流程示意图,图X为获取音频数据的流程图;该音频轨道存在于Android操作系统中的应用程序框架层,导播应用程序存在于Android操作系统中的应用程序层,音频数据存在于Android操作系统中的HAL层。
本发明实施例提供一种基于虚拟麦克风的音频数据获取方法,配置有Android操作系统的终端设备可以通过至少一个应用程序接收获取音频数据的指令,根据指令为每个应用程序创建一个虚拟麦克风,将至少一个虚拟麦克风注册到虚拟麦克风HAL,再通过虚拟麦克风HAL获取音频数据。通过该方案,每个应用程序都对应一个虚拟麦克风,这样当真实麦克风被某个应用程序占用的时候,终端设备的其他应用程序都可以通过对应的虚拟麦克风从注册的虚拟麦克风HAL中获取音频数据,并且使用虚拟麦克风代替真实麦克风,这样可以在不影响当前正在使用真实麦克风的应用程序的情况下,获取到音频数据。
实施例二
如图5所示,本发明实施例提供一种基于虚拟麦克风的音频数据获取方法,该方法还可以包括下述步骤:
501、通过至少一个应用程序接收获取音频数据的指令。
502、根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风。
503、将至少一个虚拟麦克风注册到虚拟麦克风HAL。
504、通过虚拟麦克风HAL获取目标音频数据。
在本发明实施例中,终端设备可以通过虚拟麦克风HAL获取目标音频数据。
可选的,通过虚拟麦克风HAL获取目标音频数据,具体可以包括以下三种实现方式:
实现方式一:通过虚拟麦克风HAL获取第一音频数据;通过虚拟麦克风HAL获取至少一个应用程序的音频参数;根据每个应用程序对应的音频参数,通过虚拟麦克风HAL对第一音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
在本发明实施例中,终端设备可以先获取第一音频数据,并且根据每个应用程序的音频参数,对第一音频数据进行处理,得到针对每个应用程序不同的目标音频数据。
其中,音频参数可以包括以下至少一种:音频格式、音频时长、声道数量。
需要说明的是,音频格式主要包括:cda格式、WAV格式、mp3格式、vqf格式等;音频时长是指音频数据的时间长度;声道数量是衡量音频数据传输质量的重要指标,主要包括单声道和双声道。
示例性的,假设终端设备获取到第一应用程序的音频参数为cda格式、单声道的音频,时长为3分钟;第二应用程序的音频参数为mp3格式、单声道的音频,时长为1.6分钟;第三应用程序的音频参数为vqf格式、双声道的音频,时长为0.9分钟。那么终端设备可以通过虚拟麦克风HAL获取第一音频数据,将该第一音频数据转换成cda格式、单声道的音频,再剪辑为3分钟的音频数据,以得到针对第一应用程序的目标音频数据;将该第一音频数据转换成mp3格式、单声道的音频,再剪辑为1.6分钟的音频数据,以得到针对第二应用程序的目标音频数据;将该第一音频数据转换成vqf格式、双声道的音频,再剪辑为0.9分钟的音频数据,以得到针对第三应用程序的目标音频数据。
可选的,该音频参数还可以包括:量化位数、采样频率、比特率等。
其中,量化位数可以表示模拟音频信号的幅度轴,其决定了模拟信号数字化以后的动态范围,通常量化位数为8位和16位,量化位数越高,信号的动态范围越大,数字化后的音频信号就越可能接近原始信号,其需要的存贮空间也越大。采样频率是指一秒钟内采样的次数,其中,电话所用采样率为8000Hz-11025 Hz,无线电广播所用采样率为22050Hz,数码视频所用采样率为32000Hz,音频CD所用采样率为44100Hz。比特率也叫码率,指音频每秒播放的数据量,单位用bit表示。
实现方式二:通过虚拟麦克风HAL获取第一音频数据;通过虚拟麦克风HAL获取针对至少一个应用程序设置的声音特效参数;根据针对每个应用程序设置的声音特效参数,通过虚拟麦克风HAL对第一音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
在本发明实施例中,终端设备可以先获取第一音频数据,并且根据每个应用程序设置的声音特效参数,对第一音频数据进行处理,得到针对每个应用程序不同的目标音频数据。
其中,声音特效参数可以包括以下至少一种:半音值、音分值、变速比率。
需要说明的是,半音值趋向正值方向变化,人声会越来越悦耳,越趋向女声,半音值越大,人声就变得跟小孩子一样尖锐;同理,半音值趋向负值方向变化,人声会越来越浑厚,越趋向男声,半音值越小,声音越来越低沉。音分值可以用于衡量声音的高低,音分值越大,人声越突出;音分值越小,人声越低沉。调整变速比率实际是调整声音的音调,变速比率越高,音调越高;一般情况下女声的音调要高于男声的音调,如果当前的音频数据是男生的声音,那么终端设备可以增大变速比率,以使得男声变女声;如果当前的音频数据是女生的声音,那么终端设备可以减小变速比率,以使得女声变男声。
示例性的,假设终端设备获取到第一应用程序的声音特效参数包括:半音值为5,音分值为1;第二应用程序的声音特效参数包括:变速比率为120;第三应用程序的声音特效参数包括:半音值为-3,音分值为-2,变速比率为42。那么终端设备可以通过虚拟麦克风HAL获取第一音频数据,将该第一音频数据的半音值调整为5,音分值调整为1,以得到针对第一应用程序的目标音频数据;将该第一音频数据的变速比率调整为120,以得到针对第二应用程序的目标音频数据;将该第一音频数据的半音值调整为-3,音分值调整为-2,变速比率调整为42,以得到针对第三应用程序的目标音频数据。
实现方式三:通过虚拟麦克风HAL获取第二音频数据;通过虚拟麦克风HAL获取至少一个应用程序的音频参数;根据每个应用程序对应的音频参数,通过虚拟麦克风HAL对第二音频数据进行处理,得到针对每个应用程序处理后的第三音频数据;再通过虚拟麦克风HAL获取针对至少一个应用程序设置的声音特效参数,根据针对每个应用程序设置的声音特效参数,通过虚拟麦克风HAL对第三音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
在本发明实施例中,终端设备可以先获取第二音频数据,并且根据每个应用程序的音频参数,对第二音频数据进行处理,得到针对每个应用程序不同的第三音频数据;再根据每个应用程序设置的声音特效参数,对第三音频数据进行处理,得到针对每个应用程序不同的目标音频数据。
需要说明的是,在该实现方式中,终端设备根据音频参数对音频数据进行处理,和根据声音特效参数对音频数据进行处理的顺序可以是,先根据音频参数对音频数据进行处理,再根据声音特效参数对音频数据进行处理;也可以是,先根据声音特效参数对音频数据进行处理,再根据音频参数对音频数据进行处理,本发明实施例不做限定。
实现方式四:通过虚拟麦克风HAL获取第四音频数据;通过虚拟麦克风HAL获取至少一个应用程序的过滤参数;根据每个应用程序对应的过滤参数,通过虚拟麦克风HAL对第四音频数据进行过滤,得到针对每个应用程序处理后的目标音频数据。
在本发明实施例中,终端设备可以先获取第四音频数据,并且根据每个应用程序的过滤参数,对第四音频数据进行过滤,得到针对每个应用程序不同的目标音频数据。
其中,过滤参数可以包括以下至少一种:距离阈值、音色、分贝阈值。
需要说明的是,距离用于指示发出声音的用户与终端设备的距离,当某用户与终端设备的距离大于距离阈值的时候,终端设备可以将该用户的声音从第四音频数据中过滤掉;音色可以用于区别发出声音的用户,终端设备可以将第四音频数据中的某一音色的声音过滤掉;分贝值可以用于区分声音的响度大小,终端设备可以将第四音频数据中大于分贝阈值的声音过滤掉。
示例性的,假设距离阈值为5米,分贝阈值为40dB,预存音色为用户A的声音。终端设备可以通过虚拟麦克风HAL获取第四音频数据,并对该第四音频数据中的声源超过5米的声音进行过滤,对该第四音频数据中分贝值大于40dB的声音进行过滤,对该第四音频数据中音色与用户A的声音不匹配的声音进行过滤,以得到目标音频数据。
505、将目标音频数据由至少一个虚拟麦克风分别转发至对应的应用程序。
在本发明实施例中,终端设备可以将目标音频数据分别通过虚拟麦克风转发至与虚拟麦克风对应的应用程序。
需要说明的是,终端设备通过虚拟麦克风HAL对音频数据进行处理后,可以得到针对不同应用程序的不同的目标音频数据,并将每一个目标音频数据分别发送给与该目标音频数据对应的应用程序。
506、在至少一个应用程序中输出目标音频数据。
在本发明实施例中,终端设备的应用程序接收到对应的目标音频数据之后,还可以输出该目标音频数据。
本发明实施例提供一种基于虚拟麦克风的音频数据获取方法,配置有Android操作系统的终端设备可以通过至少一个应用程序接收获取音频数据的指令,根据指令为每个应用程序创建一个虚拟麦克风,将至少一个虚拟麦克风注册到虚拟麦克风HAL,通过虚拟麦克风HAL获取目标音频数据,并将目标音频数据有虚拟麦克风分别发送至对应的应用程序,通过应用程序输出目标音频数据。通过该方案,每个应用程序都对应一个虚拟麦克风,这样当真实麦克风被某个应用程序占用的时候,终端设备就可以通过多个虚拟麦克风从注册的虚拟麦克风HAL中获取不同的音频数据,并将音频数据分别发送至对应的应用程序中,这样不同的应用程序可能会获取到不同的音频数据,并且使用虚拟麦克风代替真实麦克风,这样可以在不影响当前正在使用真实麦克风的应用程序的情况下,获取到音频数据。
作为一种可选的实现方式,终端设备在至少一个应用程序中输出目标音频数据之后,还可以包括:若检测到该目标音频数据为歌曲,则获取该目标音频数据的多个目标关键字;并通过该多个目标关键字,获取终端设备预存的与该目标关键字匹配的原唱音频数据;将目标音频数据与原唱音频数据进行比较,得到歌唱分数;在终端设备的显示屏上显示该歌唱分数。
需要说明的是,如果终端设备获取到了用户唱的一段歌曲,那么终端设备会采集其中的多个关键字,根据该关键字确定与用户歌唱内容相匹配的原唱音频数据,将用户的音频数据与原唱音频数据进行比较并打分,再将分数显示在终端设备的显示屏中。
通过该可选的实现方式,当用户对着终端设备唱歌的时候,终端设备可以对用户的音频数据进行打分,这样可以增强用户与终端设备的交互性能。
实施例三
如图6所示,本发明实施例提供一种终端设备,该终端设备包括:
收发模块601,用于通过至少一个应用程序接收获取音频数据的指令;
创建模块602,用于根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;
处理模块603,用于将至少一个虚拟麦克风注册到虚拟麦克风HAL,虚拟麦克风HAL为在Android操作系统中的服务层预先创建的;
获取模块604,用于通过虚拟麦克风HAL为至少一个应用程序获取目标音频数据。
可选的,获取模块604,具体用于通过虚拟麦克风HAL获取目标音频数据;
收发模块601,具体用于将目标音频数据由至少一个虚拟麦克风分别转发至对应的应用程序,以使得至少一个应用程序获取到目标音频数据。
可选的,获取模块604,具体用于通过虚拟麦克风HAL获取第一音频数据;
获取模块604,具体用于通过虚拟麦克风HAL获取至少一个应用程序的音频参数,音频参数包括以下至少一种:音频格式、音频时长、声道数量;
处理模块603,具体用于根据每个应用程序对应的音频参数,通过虚拟麦克风HAL对第一音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
可选的,获取模块604,具体用于通过虚拟麦克风HAL获取第一音频数据;
获取模块604,具体用于通过虚拟麦克风HAL获取针对至少一个应用程序设置的声音特效参数;
处理模块603,具体用于根据针对每个应用程序设置的声音特效参数,通过虚拟麦克风HAL对第二音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
可选的,处理模块603,还用于将虚拟麦克风HAL注册至Android操作系统中的系统运行库层中的麦克风服务;
收发模块601,还用于通过虚拟麦克风HAL接收麦克风服务发送的共享内存的地址。
可选的,获取模块604,具体用于根据共享内存的地址,通过虚拟麦克风HAL从共享内存中为至少一个应用程序获取目标音频数据。
可选的,该终端设备还包括:
输出模块605,用于在至少一个应用程序中输出目标音频数据。
可选的,处理模块603,具体用于响应于指令,检测虚拟麦克风功能是否启动;
创建模块602,具体用于若虚拟麦克风功能启动,则根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风。
可选的,处理模块603,具体用于响应于指令,控制第一应用程序通过应用程序编程接口API调用麦克风打开函数,以尝试启用麦克风获取音频数据,第一应用程序为至少一个应用程序中的一个应用程序;
创建模块602,具体用于在确定实体麦克风已被第二应用程序占用的情况下,为第一应用程序在Android操作系统中的服务层创建第一虚拟麦克风,第二应用程序为至少一个应用程序中与第一应用程序不同的应用程序。
可选的,处理模块603,具体用于在确定实体麦克风已被第二应用程序占用的情况下,检测虚拟麦克风功能是否启动;
创建模块602,具体用于若虚拟麦克风功能启动,则根据指令为第一应用程序创建第一虚拟麦克风;
处理模块603,具体用于若虚拟麦克风功能未启动,则启动虚拟麦克风功能,并根据指令为第一应用程序创建第一虚拟麦克风。
可选的,收发模块601,具体用于通过至少一个虚拟麦克风向虚拟麦克风HAL发送注册请求消息;
处理模块603,具体用于若某一虚拟麦克风接收到虚拟麦克风HAL发送的注册成功消息,则确定将某一虚拟麦克风成功注册到虚拟麦克风HAL。
可选的,每个虚拟麦克风发送的注册请求消息中携带有每个虚拟麦克风的标识;
处理模块603,还用于在虚拟麦克风HAL中保存至少一个虚拟麦克风中每个虚拟麦克风的标识。
可选的,处理模块603,具体用于通过虚拟麦克风HAL将至少一个虚拟麦克风对象回调给麦克风软件层,以通知至少一个应用程序对应的虚拟麦克风创建成功。
如图7所示,本发明实施例还提供一种终端设备,该终端设备可以包括:
存储有可执行程序代码的存储器701;
与存储器701耦合的处理器702;
其中,处理器702调用存储器701中存储的可执行程序代码,执行上述各方法实施例中终端设备执行的基于虚拟麦克风的音频数据获取方法。
如图8所示,本发明实施例还提供一种终端设备,该终端设备包括但不限于:射频(radio frequency,RF)电路801、存储器802、输入单元803、显示单元804、传感器805、音频电路806、WiFi(wireless fidelity,无线通信)模块807、处理器808、电源809、以及摄像头810等部件。其中,射频电路801包括接收器8011和发送器8012。本领域技术人员可以理解,图8中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路801可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器808处理;另外,将设计上行的数据发送给基站。通常,RF电路801包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路801还可以通过无线通信与网络和其他设备通信。
在本发明实施例中,RF电路801可以用于通过至少一个应用程序接收获取音频数据的指令;以及将目标音频数据由至少一个虚拟麦克风分别转发至对应的应用程序,以使得至少一个应用程序获取到目标音频数据;以及通过虚拟麦克风HAL接收麦克风服务发送的共享内存的地址;以及通过至少一个虚拟麦克风向虚拟麦克风HAL发送注册请求消息。
存储器802可用于存储软件程序以及模块,处理器808通过运行存储在存储器802的软件程序以及模块,从而执行终端设备的各种功能应用以及数据处理。
输入单元803可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元803可包括触控面板8031以及其他输入设备8032。触控面板8031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板8031上或在触控面板8031附近的操作),并根据预先设定的程式驱动相应的连接装置。在本发明实施例中,当用户需要获取音频数据的时候,用户就可以对触控面板8031进行触控操作,以使得终端设备接收到获取音频数据的指令。
可选的,触控面板8031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器808,并能接收处理器808发来的命令并加以执行。此外,输入单元803还可以包括其他输入设备8032。具体地,其他输入设备8032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元804可用于显示由用户输入的信息或提供给用户的信息以及终端设备的各种菜单。显示单元804可包括显示面板8041,进一步的,触控面板8031可覆盖显示面板8041,当触控面板8031检测到在其上或附近的触摸操作后,传送给处理器808以确定触摸事件,随后处理器808根据触摸事件的在显示面板8041上提供相应的视觉输出。虽然在图8中,触控面板8031与显示面板8041是作为两个独立的部件来实现终端设备的输入和输入功能,但是在某些实施例中,可以将触控面板8031与显示面板8041集成而实现终端设备的输入和输出功能。
终端设备还可包括至少一种传感器805,比如光传感器、运动传感器以及其他传感器。
音频电路806、扬声器8061,传声器8062可提供用户与终端设备之间的音频接口。音频电路806可将接收到的音频数据转换后的电信号,传输到扬声器8061,由扬声器8061转换为声音信号输出;另一方面,传声器8062将收集的声音信号转换为电信号,由音频电路806接收后转换为音频数据,再将音频数据输出处理器808处理后,经RF电路801以发送给比如另一终端设备,或者将音频数据输出至存储器802以便进一步处理。在本发明实施例中,终端设备可以通过扬声器8061输出目标音频数据。
WiFi属于短距离无线传输技术,终端设备通过WiFi模块807可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。
处理器808是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行终端设备的各种功能和处理数据,从而对终端设备进行整体监控。
在本发明实施例中,处理器808可以用于根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;以及将至少一个虚拟麦克风注册到虚拟麦克风HAL,虚拟麦克风HAL为在Android操作系统中的服务层预先创建的;以及通过虚拟麦克风HAL为至少一个应用程序获取目标音频数据。
可选的,处理器808还可以用于通过虚拟麦克风HAL获取目标音频数据。
可选的,处理器808还可以用于通过虚拟麦克风HAL获取第一音频数据;以及通过虚拟麦克风HAL获取至少一个应用程序的音频参数,音频参数包括以下至少一种:音频格式、音频时长、声道数量;以及根据每个应用程序对应的音频参数,通过虚拟麦克风HAL对第一音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
可选的,处理器808还可以用于通过虚拟麦克风HAL获取第一音频数据;以及通过虚拟麦克风HAL获取针对至少一个应用程序设置的声音特效参数;以及根据针对每个应用程序设置的声音特效参数,通过虚拟麦克风HAL对第二音频数据进行处理,得到针对每个应用程序处理后的目标音频数据。
可选的,处理器808还可以用于将虚拟麦克风HAL注册至Android操作系统中的系统运行库层中的麦克风服务。
可选的,处理器808还可以用于根据共享内存的地址,通过虚拟麦克风HAL从共享内存中为至少一个应用程序获取目标音频数据。
可选的,处理器808还可以用于响应于指令,检测虚拟麦克风功能是否启动;以及若虚拟麦克风功能启动,则根据指令为至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风。
可选的,处理器808还可以用于响应于指令,控制第一应用程序通过应用程序编程接口API调用麦克风打开函数,以尝试启用麦克风获取音频数据,第一应用程序为至少一个应用程序中的一个应用程序;以及在确定实体麦克风已被第二应用程序占用的情况下,为第一应用程序在Android操作系统中的服务层创建第一虚拟麦克风,第二应用程序为至少一个应用程序中与第一应用程序不同的应用程序。
可选的,处理器808还可以用于在确定实体麦克风已被第二应用程序占用的情况下,检测虚拟麦克风功能是否启动;以及若虚拟麦克风功能启动,则根据指令为第一应用程序创建第一虚拟麦克风;以及若虚拟麦克风功能未启动,则启动虚拟麦克风功能,并根据指令为第一应用程序创建第一虚拟麦克风。
可选的,处理器808还可以用于若某一虚拟麦克风接收到虚拟麦克风HAL发送的注册成功消息,则确定将某一虚拟麦克风成功注册到虚拟麦克风HAL。
可选的,处理器808还可以用于每个虚拟麦克风发送的注册请求消息中携带有每个虚拟麦克风的标识;以及在虚拟麦克风HAL中保存至少一个虚拟麦克风中每个虚拟麦克风的标识。
可选的,处理器808还可以用于通过虚拟麦克风HAL将至少一个虚拟麦克风对象回调给麦克风软件层,以通知至少一个应用程序对应的虚拟麦克风创建成功。
终端设备还包括给各个部件供电的电源809(比如电池),优选的,电源可以通过电源管理系统与处理器808逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管未示出,终端设备还可以包括蓝牙模块等,在此不再赘述。
本发明实施例提供一种计算机可读存储介质,其存储计算机程序,其中,该计算机程序使得计算机执行如以上各方法实施例中的方法的部分或全部步骤。
本发明实施例还提供一种计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行如以上各方法实施例中的方法的部分或全部步骤。
本发明实施例还提供一种应用发布平台,其中,应用发布平台用于发布计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行如以上各方法实施例中的方法的部分或全部步骤。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
本发明实施例提供的终端设备能够实现上述方法实施例中所示的各个过程,为避免重复,此处不再赘述。
在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物单元,即可位于一个地方,或者也可以分布到多个网络单元上。可根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或者部分,可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明的各个实施例上述方法的部分或全部步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
Claims (10)
1.一种基于虚拟麦克风的音频数据获取方法,其特征在于,应用于安卓Android操作系统的终端设备,所述方法包括:
通过至少一个应用程序接收获取音频数据的指令;
根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;
将所述至少一个虚拟麦克风注册到虚拟麦克风HAL,所述虚拟麦克风HAL为在所述Android操作系统中的服务层预先创建的;
通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据。
2.根据权利要求1所述的方法,其特征在于,所述通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据,包括:
通过所述虚拟麦克风HAL获取所述目标音频数据;
将所述目标音频数据由所述至少一个虚拟麦克风分别转发至对应的应用程序,以使得所述至少一个应用程序获取到所述目标音频数据。
3.根据权利要求1所述的方法,其特征在于,所述通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据之后,所述方法还包括:
在所述至少一个应用程序中输出所述目标音频数据。
4.根据权利要求1所述的方法,其特征在于,在所述Android操作系统中预置虚拟麦克风功能,所述根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,包括:
响应于所述指令,检测所述虚拟麦克风功能是否启动;
若所述虚拟麦克风功能启动,则根据所述指令为所述至少一个应用程序在所述Android操作系统中的服务层创建所述至少一个虚拟麦克风。
5.根据权利要求4所述的方法,其特征在于,所述根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,包括:
响应于所述指令,控制第一应用程序通过应用程序编程接口API调用麦克风打开函数,以尝试启用实体麦克风获取音频数据,所述第一应用程序为所述至少一个应用程序中的一个应用程序;
在确定所述实体麦克风已被第二应用程序占用的情况下,为所述第一应用程序在所述Android操作系统中的服务层创建第一虚拟麦克风,所述第二应用程序为所述至少一个应用程序中与所述第一应用程序不同的应用程序。
6.根据权利要求5所述的方法,其特征在于,所述在确定所述实体麦克风已被第二应用程序占用的情况下,为所述第一应用程序在所述Android操作系统中的服务层创建第一虚拟麦克风,包括:
在确定所述实体麦克风已被所述第二应用程序占用的情况下,检测所述虚拟麦克风功能是否启动;
若所述虚拟麦克风功能启动,则根据所述指令为所述第一应用程序创建所述第一虚拟麦克风;
若所述虚拟麦克风功能未启动,则启动所述虚拟麦克风功能,并根据所述指令为所述第一应用程序创建所述第一虚拟麦克风。
7.根据权利要求1所述的方法,其特征在于,所述将所述至少一个虚拟麦克风注册到虚拟麦克风HAL,包括:
通过所述至少一个虚拟麦克风向所述虚拟麦克风HAL发送注册请求消息;
若某一虚拟麦克风接收到所述虚拟麦克风HAL发送的注册成功消息,则确定将所述某一虚拟麦克风成功注册到所述虚拟麦克风HAL。
8.根据权利要求7所述的方法,其特征在于,所述通过所述至少一个虚拟麦克风向所述虚拟麦克风HAL发送注册请求消息之后,还包括:
每个虚拟麦克风发送的所述注册请求消息中携带有所述每个虚拟麦克风的标识;
在所述虚拟麦克风HAL中保存所述至少一个虚拟麦克风中所述每个虚拟麦克风的标识。
9.根据权利要求1所述的方法,其特征在于,所述将所述至少一个虚拟麦克风注册到虚拟麦克风HAL之后,所述方法还包括:
通过所述虚拟麦克风HAL将所述至少一个虚拟麦克风对象回调给麦克风软件层,以通知所述至少一个应用程序对应的虚拟麦克风创建成功。
10.一种终端设备,其特征在于,所述终端设备包括:
收发模块,用于通过至少一个应用程序接收获取音频数据的指令;
创建模块,用于根据所述指令为所述至少一个应用程序在Android操作系统中的服务层创建至少一个虚拟麦克风,其中,为每个应用程序对应创建一个虚拟麦克风;
处理模块,用于将所述至少一个虚拟麦克风注册到虚拟麦克风HAL,所述虚拟麦克风HAL为在所述Android操作系统中的服务层预先创建的;
获取模块,用于通过所述虚拟麦克风HAL为所述至少一个应用程序获取目标音频数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110330821.1A CN113220261A (zh) | 2021-03-26 | 2021-03-26 | 一种基于虚拟麦克风的音频数据获取方法及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110330821.1A CN113220261A (zh) | 2021-03-26 | 2021-03-26 | 一种基于虚拟麦克风的音频数据获取方法及终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113220261A true CN113220261A (zh) | 2021-08-06 |
Family
ID=77084409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110330821.1A Pending CN113220261A (zh) | 2021-03-26 | 2021-03-26 | 一种基于虚拟麦克风的音频数据获取方法及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220261A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032354A (zh) * | 2018-01-12 | 2019-07-19 | 珠海全志科技股份有限公司 | 一种单路麦克风复用方法及装置 |
CN110442319A (zh) * | 2015-03-08 | 2019-11-12 | 苹果公司 | 对语音触发进行响应的竞争设备 |
CN110808060A (zh) * | 2019-10-15 | 2020-02-18 | 广州国音智能科技有限公司 | 音频处理方法、装置、设备及计算机可读存储介质 |
CN111314799A (zh) * | 2018-12-11 | 2020-06-19 | 中兴通讯股份有限公司 | 终端系统构架、通信系统及通信方法、存储介质 |
CN111506291A (zh) * | 2020-03-05 | 2020-08-07 | 北京声智科技有限公司 | 音频数据采集方法、装置、计算机设备及存储介质 |
KR20200112725A (ko) * | 2019-03-20 | 2020-10-05 | 크리에이티브 테크놀로지 엘티디 | 복수의 오디오 공간 간 오디오를 처리하기 위한 시스템 및 방법 |
CN112035273A (zh) * | 2020-07-17 | 2020-12-04 | 湖北亿咖通科技有限公司 | 一种硬件数据获取方法、系统和计算机设备 |
-
2021
- 2021-03-26 CN CN202110330821.1A patent/CN113220261A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442319A (zh) * | 2015-03-08 | 2019-11-12 | 苹果公司 | 对语音触发进行响应的竞争设备 |
CN110032354A (zh) * | 2018-01-12 | 2019-07-19 | 珠海全志科技股份有限公司 | 一种单路麦克风复用方法及装置 |
CN111314799A (zh) * | 2018-12-11 | 2020-06-19 | 中兴通讯股份有限公司 | 终端系统构架、通信系统及通信方法、存储介质 |
KR20200112725A (ko) * | 2019-03-20 | 2020-10-05 | 크리에이티브 테크놀로지 엘티디 | 복수의 오디오 공간 간 오디오를 처리하기 위한 시스템 및 방법 |
CN110808060A (zh) * | 2019-10-15 | 2020-02-18 | 广州国音智能科技有限公司 | 音频处理方法、装置、设备及计算机可读存储介质 |
CN111506291A (zh) * | 2020-03-05 | 2020-08-07 | 北京声智科技有限公司 | 音频数据采集方法、装置、计算机设备及存储介质 |
CN112035273A (zh) * | 2020-07-17 | 2020-12-04 | 湖北亿咖通科技有限公司 | 一种硬件数据获取方法、系统和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111524501B (zh) | 语音播放方法、装置、计算机设备及计算机可读存储介质 | |
JP6906584B2 (ja) | デバイスをウェイクアップするための方法及び装置 | |
CN112165648B (zh) | 一种音频播放的方法、相关装置、设备及存储介质 | |
CN107731241B (zh) | 处理音频信号的方法、装置和存储介质 | |
CN106328176B (zh) | 一种生成歌曲音频的方法和装置 | |
CN110097895B (zh) | 一种纯音乐检测方法、装置及存储介质 | |
CN110830368B (zh) | 即时通讯消息发送方法及电子设备 | |
CN113220262A (zh) | 一种多应用程序的音频数据分发方法及终端设备 | |
CN113823250B (zh) | 音频播放方法、装置、终端及存储介质 | |
CN107371102A (zh) | 音频播放音量的控制方法、装置及存储介质和移动终端 | |
CN111225366A (zh) | 设备的查找方法、装置、存储介质及终端 | |
CN111986454A (zh) | 无线耳机的查找方法、装置、存储介质以及终端 | |
CN110675848A (zh) | 音频处理方法、装置及存储介质 | |
CN115810356A (zh) | 语音控制方法、装置、存储介质以及电子设备 | |
KR100753042B1 (ko) | 핫 키를 이용한 이동 통신 단말기의 음악 파일 리스트 저장및 표시 방법 | |
US10002611B1 (en) | Asynchronous audio messaging | |
WO2018040102A1 (zh) | 音频处理方法及设备 | |
CN114360546A (zh) | 电子设备及其唤醒方法 | |
CN111816168A (zh) | 一种模型训练的方法、语音播放的方法、装置及存储介质 | |
CN112259076A (zh) | 语音交互方法、装置、电子设备及计算机可读存储介质 | |
CN113409805A (zh) | 人机交互方法、装置、存储介质及终端设备 | |
WO2023061330A1 (zh) | 音频合成方法、装置、设备及计算机可读存储介质 | |
CN113220261A (zh) | 一种基于虚拟麦克风的音频数据获取方法及终端设备 | |
CN112433697B (zh) | 一种资源展示方法、装置、电子设备及存储介质 | |
CN113220260A (zh) | 一种多应用程序的音频数据处理方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |