录音方法、设备及存储介质与流程
未命名
10-08
阅读:101
评论:0

1.本技术涉及终端技术领域,尤其涉及一种录音方法、设备及存储介质。
背景技术:
2.随着终端技术的发展,用户对于电子设备的功能需求越发多样化,为了满足用户对于声音的记录需求,大多数的电子设备支持录音功能。
3.目前,在连接蓝牙耳机的录音场景中,电子设备上的三方应用通常使用采样率44.1khz、低时延参数(如4ms)进行录音。然而,电子设备内置音频芯片(integrated circuit,ic)不支持44.1khz、低时延参数的录音数据,三方应用最终会使用44.1khz、非低时延参数(如20ms)进行录音,由于录音对时延要求不高,设备厂商会在录音通路上加入录音算法,对录音数据信号处理,如增强音频信号等。在未连接蓝牙耳机的录音场景中,三方应用通常会使用采样率48khz、低时延参数进行录音,录音通路上通常不加入录音算法。
4.对比上述两种录音场景,由于使用的录音通路不同,导致同一电子设备在两种录音场景下的录音效果差异较大,用户的录音体验不佳。
技术实现要素:
5.本技术实施例提供一种录音方法、设备及存储介质,使得电子设备在不同录音场景下录制的音频效果无较大差异,提升用户的录音体验。
6.第一方面,本技术实施例提出一种录音方法,应用于电子设备,所述电子设备包括应用程序层的第一应用、硬件抽象层hal的音频hal以及驱动层的麦克风驱动,录音方法包括:第一时刻,响应于第一应用的第一录音请求,第一录音请求包括第一应用在第一录音场景下预设的第一音频参数,音频hal为麦克风驱动配置第二音频参数,麦克风驱动基于第二音频参数采集音频数据。其中第一音频参数为电子设备不支持的音频参数,第二音频参数为电子设备支持的音频参数;第二时刻,响应于第一应用的第二录音请求,第二录音请求包括第一应用在第二录音场景下预设的第三音频参数,音频hal为麦克风驱动配置第三音频参数,麦克风驱动基于第三音频参数采集音频数据。其中第一时刻与第二时刻为不同的时刻,第三音频参数为电子设备支持的音频参数。
7.上述实施例中,第一应用为具有录音功能的应用,第一录音场景为电子设备连接蓝牙耳机的录音场景,第二录音场景为电子设备未连接蓝牙耳机的录音场景。
8.示例性的,在电子设备连接蓝牙耳机的录音场景下,第一应用预设的第一音频参数包括例如音频采样率44.1khz,时延4ms(可记为44.1khz@0x5),第一音频参数为电子设备不支持的音频参数,对此音频hal可以重新为麦克风驱动配置一个第二音频参数,第二音频参数为电子设备支持的音频参数,例如第二音频参数包括音频采样率48khz,时延4ms(可记为48khz@0x5)。麦克风驱动基于该新的第二音频参数中音频采样率采集音频数据。
9.示例性的,在电子设备未连接蓝牙耳机的录音场景下,第一应用预设的第三音频参数包括例如音频采样率48khz,时延4ms(可记为48khz@0x5),第三音频参数为电子设备支持的音频参数,音频hal可以直接将该第三音频参数配置给麦克风驱动,麦克风驱动基于该第三音频参数中的音频采样率采集音频数据。
10.上述示例中,第二音频参数和第三音频参数是相同的。在一些实施例中,第二音频参数和第三音频参数也可以是不同的。
11.需要指出的是,音频参数是否为电子设备支持的音频参数,需要同时考虑两项参数,如音频采样率和时延,仅单独考虑例如音频采样率是无法确定是否为电子设备支持的音频参数。例如44.1khz@0x5为电子设备不支持的音频参数,44.1khz@0x0为电子设备支持的音频参数,这两个音频参数中音频采样率均为44.1khz,仅考虑音频采样率是无法确定是否为电子设备支持的音频参数,需要结合时延来确定。
12.基于上述示例可知,用户使用同一电子设备中的第一应用,在不同录音场景下录音时,第一应用下发的录音请求中的音频参数通常是不同的,例如第一录音场景下第一应用下发的音频参数为电子设备不支持的音频参数,第二录音场景下第一应用下发的音频参数为电子设备支持的音频参数。音频hal可以对第一录音场景下的音频参数作调整,使其为电子设备支持的音频参数,例如可以将两个不同录音场景下的音频参数配置一致,这样,就不会出现同一设备两次录音的录音效果差异较大的问题,提升用户的录音体验。
13.第一方面的一个可选实施例中,第二音频参数和第一音频参数中的音频采样率不同,第二音频参数和第一音频参数中的时延参数相同。
14.示例性的,第一音频参数中的音频采样率为44.1khz,第二音频参数中的音频采样率为48khz,第一音频参数和第二音频参数中的时延均为4ms。
15.本实施例中,通过调整音频参数中的音频采样率,保持时延参数不变,为麦克风驱动重新配置音频参数,重配置的音频参数为电子设备支持的音频参数。
16.第一方面的一个可选实施例中,第二音频参数与第三音频参数相同。
17.本实施例中,第二音频参数和第三音频参数相同指的是第二音频参数和第三音频参数中的音频采样率和时延均相同。示例性的,第二音频参数和第三音频参数中的音频采样率均为48khz,第二音频参数和第三音频参数中的时延均为4ms。
18.这样,用户使用同一电子设备的第一应用,分别在连接蓝牙耳机或不连接蓝牙耳机进行录音,两次录音的录音效果一致,即不会出现连接蓝牙耳机录制的音效与不连接蓝牙耳机录制的音效差异较大的问题。
19.第一方面的一个可选实施例中,响应于第一应用的第一录音请求,音频hal为麦克风驱动配置第二音频参数,包括:响应于第一应用的第一录音请求,音频hal确定第一音频参数是否为电子设备支持的音频参数;在音频hal确定第一音频参数为电子设备不支持的音频参数的情况下,音频hal为麦克风驱动配置第二音频参数。
20.本实施例中,音频hal在确定第一应用下发的音频参数不满足要求时,直接为其配置新的音频参数,使得电子设备能够正常执行录音流程,用户侧不会感知到该变化。
21.第一方面的一个可选实施例中,录音方法,还包括:在音频hal为麦克风驱动配置第二音频参数后,音频hal创建音频重采样模块,音频重采样模块用于根据第一音频参数中的音频采样率,对麦克风采集的音频数据进行重采样。
22.本实施例中,音频重采样模块可以看作是音频hal的一个子模块,或者,也可以看作是独立于音频hal的一个模块,音频hal可以通过调用该模块对音频数据进行重采样。
23.第一方面的一个可选实施例中,电子设备还包括应用程序框架层的音频管理模块,录音方法还包括:在音频hal为麦克风驱动配置第二音频参数后,音频管理模块创建录音线程和缓存区,缓存区用于缓存麦克风采集的音频数据。
24.第一方面的一个可选实施例中,麦克风驱动基于第二音频参数采集音频数据,包括:响应于第一应用的读音频数据的请求,电子设备的应用程序框架层的音频管理模块激活第一录音请求对应的录音线程;音频管理模块通过音频hal,触发麦克风驱动基于第二音频参数采集音频数据。
25.第一方面的一个可选实施例中,录音方法还包括:在音频hal为麦克风驱动配置第二音频参数后,音频hal设置第一标记为第一值;其中,第一标记用于指示是否对音频数据进行重采样,第一标记为第一值用于指示对音频数据进行重采样。
26.第一方面的一个可选实施例中,录音方法还包括:在音频hal从麦克风驱动获取到麦克风采集的音频数据后,音频hal确定是否对音频数据进行重采样。
27.第一方面的一个可选实施例中,音频hal确定是否对音频数据进行重采样,包括:音频hal通过查询第一标记的数值,确定是否对音频数据进行重采样;若第一标记为第一值,确定对音频数据进行重采样;或者,若第一标记为第二值,确定不对音频数据进行重采样。
28.基于前述三个实施例可知,音频hal如果为麦克风重新配置的音频参数,音频hal需要做相应的记录,以便在音频hal获取到麦克风采集的音频数据后,基于该记录判断是否需要对该音频数据进行重采样。
29.第一方面的一个可选实施例中,录音方法还包括:在音频hal确定对音频数据进行重采样的情况下,音频hal通过调用音频重采样模块对音频数据进行重采样,获取重采样后的音频数据;音频hal向第一应用传输重采样后的音频数据。
30.本实施例中,不论是何种录音场景下,音频hal向第一应用返回的音频数据,应满足第一应用下发的录音请求中音频采样率的要求。
31.第二方面,本技术实施例提供一种电子设备,包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得电子设备执行如第一方面任一项的方法。
32.第三方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如第一方面任一项的方法。
33.第四方面,本技术实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面任一项的方法。
34.第五方面,本技术实施例提供了一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行如第一方面任一项的方法。
35.应当理解的是,本技术的第二方面至第五方面与本技术的第一方面的技术方案相对应,其所取得的有益效果与第一方面及各可选实施例相似,不再赘述。
附图说明
36.图1为本技术实施例提供的录音方法的场景示意图;图2为本技术实施例提供的不同录音场景下设备采集的音频信号的波形图;图3为本技术实施例提供的一种电子设备的结构示意图;图4为本技术实施例提供的一种电子设备的软件结构示意图;图5为本技术实施例提供的一种录音方法的流程示意图;图6为本技术实施例提供的一种电子设备的界面示意图;图7为本技术实施例提供的一种录音方法的流程示意图;图8为本技术实施例提供的一种录音方法的流程示意图;图9为本技术实施例提供的一种录音方法的流程示意图。
具体实施方式
37.为了便于清楚描述本技术实施例的技术方案,本技术实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
38.本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
39.本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示a,b,c,a-b,a-c,b-c或a-b-c,其中a,b,c可以是单个,也可以是多个。
40.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的、存储的、展示的数据等,如录音数据),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
41.下面首先对本技术实施例涉及的专业术语进行简要说明。
42.采样频率(简称采样率):本技术实施例中,指的是音频采样率,即录音设备在单位时间内对模拟信号采样的多少,例如,8khz、16khz、44.1khz、48khz等,采样率越高,音频数据越真实越自然。
43.录音时延:是指电子设备的应用从请求数据开始,音频信号进入电子设备,电子设备对音频信号进行处理,后通过电子设备的硬件抽象层(hal层)的音频hal、音频框架再到应用收到数据为止所用时间。
44.录音通路:也称为音频通路,可用于将音频框架底层的数据传送至上层的录音应
用中。本技术实施例中,录音应用可以是第三方应用或系统应用,例如游戏应用、音频录制应用、设备自带的语音唤醒识别应用、语音通话应用等。
45.目前,电子设备上的三方应用逐渐转向使用opensl es库开发录音功能,在蓝牙耳机连接电子设备的情况下(即蓝牙耳机在位的情况下),三方应用会默认使用rate@44.1khz,flags@0x5(可简化为44.1khz@0x5)的参数格式进行录音,其中,rate@44.1khz表示采样率为44.1khz,flags@0x5表示低时延场景且要求原始音频数据,例如该场景时延为4ms。然而,电子设备内置各类音频芯片均不支持44.1khz的低时延场景录音,只支持48k的非低时延场景录音,即支持使用rate@48k,flags@0x0(可简化为48khz@0x0)的参数格式进行录音,其中,rate@48k表示采样率为48khz,flags@0x0表示非低时延场景,非低时延场景也称为普通时延场景,为默认设置,例如该场景时延为20ms。需要指出的是,上述rate@44.1khz或flags@0x5或44.1khz@0x5等参数格式可以理解为:例如三方应用发送的录音请求中的代码层的参数格式,以指示三方应用对音频采样率、场景时延的要求。
46.如图1中的a所示,在用户使用蓝牙耳机录音的场景中,录音数据通过蓝牙耳机播放。一种示例中,响应于用户触发的录音操作,如用户点击三方应用界面上的录音按钮,三方应用请求使用44.1khz@0x5的参数格式进行录音,由于设备不支持该参数格式,设备的hal层会返回错误码,并推荐应用使用44.1khz@0x0的参数格式进行录音,即推荐使用采样率为44.1khz的非低时延场景录音。由于该场景对时延要求不高,设备内置的音频芯片通常会在录音通路上加入一些录音算法,如降噪、均衡器(equalizer,eq)、自动增益控制(automatic generation control, agc)等算法,以增强音频信号。
47.如图1中的b所示,在用户未使用蓝牙耳机录音的场景中,录音数据直接通过设备的扬声器播放。一种示例中,响应于用户触发的录音操作,如用户语音唤醒三方应用开始录音,三方应用请求使用48khz@0x5的参数格式进行录音,由于设备支持该参数格式,设备会使用该参数格式进行录音。由于该场景对时延要求较高,设备内置的音频芯片不会在录音通路上加录音算法。
48.假设前述两个录音场景中用户使用的是同一设备,且录制内容相同。图2中的a示出了用户使用蓝牙耳机录音时设备采集的音频信号的波形图1,图2中的b示出了用户未使用蓝牙耳机录音时设备采集的音频信号的波形图2。对比可知,波形图1的音频信号的强度大于波形图2的音频信号的强度。波形图1对应的是使用蓝牙耳机录音的场景,该场景下设备使用44.1khz@0x0的参数格式进行录音,在录音通路上加入了录音算法,使得音频信号得到增强,而波形图2对应的是未使用蓝牙耳机录音的场景,该场景下设备使用48khz@0x5的参数格式进行录音,录音通路上未加入录音算法,因此,相较于波形图1的音频信号,波形图2的音频信号的强度偏低。由于上述两个录音场景使用的录音通路不同,导致同一设备两次录音的录音效果差异较大,给用户带来不好的录音体验。
49.针对上述问题,本技术实施例提出一种录音方法,通过调整蓝牙耳机录音场景下的录音参数格式,例如不调整时延,仅调整采样率,来采集音频信号。由于没有调整时延,时延要求仍保持较高,这样设备在该蓝牙耳机录音场景下的录音通路上不会加入录音算法,那么传输至应用层的音频信号就不会被增强,这样,使用蓝牙耳机录制的音频与未使用蓝牙耳机录制的音频的效果基本一致,不会出现音频效果差异较大的现象,提升用户的录音体验。
50.在介绍本技术实施例提供的录音方法之前,首先对电子设备的硬件结构进行说明。示例性的,图3为本技术实施例提供的一种电子设备的结构示意图,如图3所示,该电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件,或软件和硬件的组合实现。
51.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,显示处理单元(display process unit,dpu),和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。在一些实施例中,电子设备100也可以包括一个或多个处理器110。其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。这就避免了重复存取,减少了处理器110的等待时间,因而提高了电子设备100系统的效率。
52.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。其中,usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。
53.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
54.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子
设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。
55.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
56.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
57.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
58.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
59.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan),蓝牙,全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近场通信(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
60.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括gsm,gprs,cdma,wcdma,td-scdma,lte,gnss,wlan,nfc,fm,和/或ir技术等。上述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统
(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
61.电子设备100通过gpu,显示屏194,以及应用处理器等可以实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行指令以生成或改变显示信息。
62.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
63.电子设备100可以通过isp,一个或多个摄像头193,视频编解码器,gpu,一个或多个显示屏194以及应用处理器等实现拍摄功能。
64.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐、照片、视频等数据文件保存在外部存储卡中。
65.内部存储器121可以用于存储一个或多个计算机程序,该一个或多个计算机程序包括指令。处理器110可以通过运行存储在内部存储器121的上述指令,从而使得电子设备100执行各种功能应用以及数据处理等。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统;该存储程序区还可以存储一个或多个应用程序(比如图库、联系人等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如照片,联系人等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。在一些实施例中,处理器110可以通过运行存储在内部存储器121的指令,和/或存储在设置于处理器110中的存储器的指令,来使得电子设备100执行各种功能应用及数据处理。
66.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
67.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
68.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170a收听音乐,或收听免提通话。在本技术实施例中,用户可通过扬声器170a收听录制的音频数据。
69.受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
70.麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。本技术实施例中,当用户录制音频时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c,以使设备收集并存储用户发出的声音。电子设备100可以设置至少一个麦克风170c。在另一些实施例中,电子设备100可以设置两个麦克风170c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
71.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,还可以是美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
72.传感器180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
73.按键190包括开机键,音量键等。按键190可以是机械按键,也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
74.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。
75.电子设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的软件系统为安卓(android)系统为例,示例性说明电子设备的软件结构。分层架构将电子设备的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将安卓系统分为四层,分别为应用程序层(applications)、应用程序框架层(application framework)、安卓运行时(android runtime)和系统库,以及内核层(kernel)。
76.应用程序层可以包括一系列应用程序包。在一些实施例中,应用程序层可以包括例如相机、电话、闹钟,图库,日历,地图,导航,短信息等应用程序。
77.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。在一些实施例中,应用程序框架层可以包括例如输入管理服务(input manager service,ims)、显示策略服务、电源管理服务(power manager service,pms)、显示管理服务(display manager service,dms)、活动管理器、窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
78.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
79.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
80.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线
程管理,安全和异常的管理,以及垃圾回收等功能。
81.系统库可以包括多个功能模块。例如,表面管理器(surface manager),媒体库(media libraries),三维(3d)图形处理库(例如opengl es),二维2d图形引擎(例如sgl)等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: mpeg4,h.264,mp3,aac,amr,jpg,png等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,图层处理等。2d图形引擎是2d绘图的绘图引擎。
82.内核层是硬件和软件之间的层。内核层可以包括例如显示驱动,摄像头驱动,音频驱动,传感器驱动等,本技术实施例对此不做任何限制。
83.在一些实施例中,如图4所示,电子设备的层级结构可以包括应用程序层、应用程序框架层、硬件抽象层(hardware abstraction layer,hal)和驱动层。
84.本技术实施例中,应用程序层包括录音应用,录音应用可以理解为具有录音功能的应用程序或模块,例如游戏应用、相机应用、音频录制应用、视频录制应用、语音唤醒应用等。录音应用可以是第三方应用或系统应用。
85.本技术实施例中,应用程序框架层包括音频管理模块。音频管理模块用于管理和控制音频相关的线程。一种示例中,响应于应用层的录音请求,音频管理模块开启(创建)一个录音线程,在录音结束后,音频管理模块控制关闭该录音线程。另一种示例中,响应于应用层的读音频数据的请求,音频管理模块开启(创建)read线程,当read线程暂停或结束时,音频管理模块关闭该read线程。
86.本技术实施例中,硬件抽象层包括音频hal和音频重采样模块。音频hal用于管理和配置录音相关的音频参数,音频参数包括采样率、时延等。一种示例中,响应于应用层的录音请求,录音请求中包括应用预设的音频参数,音频hal确定设备是否支持该预设的音频参数,若支持,则直接配置该预设的音频参数,若不支持,重新配置合适的、设备支持的音频参数。另一种示例中,响应于应用层的录音请求,在音频hal重新配置音频参数后,创建音频重采样模块。音频重采样模块用于对麦克风采集的音频数据按照录音请求中应用预设的采样率(如44.1khz)进行重采样,以满足应用层对音频数据的要求。
87.硬件抽象层还可以包括录音算法,如降噪、eq、agc等算法。
88.在另一些实施例中,应用数字信号处理器(application digital signal processor, adsp)中包括录音算法,电子设备中的音频芯片可以按照录音请求中应用预设的采样率,对adsp的mfc模块配置重采样的参数,由mfc模块对麦克风采集的音频数据进行重采样。
89.需要说明的是,图4将音频hal和音频重采样模块作为两个独立的模块进行描述,可以理解为音频重采样模块独立于音频hal,音频hal通过调用音频重采样模块,以获取重采样后的音频数据,进而传输重采样后的音频数据至应用层。在一些实施例中,也可以将音频重采样模块看作是音频hal的子模块,音频hal通过调用该子模块,获取重采样后的音频数据,进而传输重采样后的音频数据至应用层。对此本技术实施例不作任何限定。
90.本技术实施例中,驱动层包括麦克风驱动,麦克风驱动用于驱动麦克风工作,以采集用户发出的声音。
91.需要说明的是,图4示出的电子设备层级结构中的层以及各层中包含的模块或部
件,并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本技术不作任何限定。
92.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
93.图5为本技术实施例提供的一种录音方法的流程示意图。结合图4所示的电子设备的层级结构,如图5所示,本实施例的录音方法,包括:s501. 响应于用户的第一操作,录音应用通过音频管理模块向音频hal传输录音请求。
94.本步骤中,响应于用户的第一操作,录音应用向音频管理模块传输录音请求,音频管理模块再将录音请求传输至音频hal。
95.一种示例中,录音请求中包括录音应用预设的音频参数,预设的音频参数包括音频采样率、时延等参数。
96.其中,音频采样频率包括例如8khz,16khz,44.1khz,48khz等,其中8khz可用于语音通话,16khz可用于语音识别,44.1khz和48khz可用于录音。
97.其中,时延可通过flags指示,示例性的,flags有以下几种:flags@0x0指示非低时延场景录音(普通时延场景录音,如时延为20ms);flags@0x1指示低时延场景录音(如时延为4ms);flags@0x4指示要求原始音频数据,无需加入录音算法处理;flags@0x5(是flags@0x1和flags@0x4的组合)指示低时延场景录音,且要求原始音频数据。
98.对于第一操作有如下几种示例:一种示例中,第一操作可以是用户点击桌面界面上的录音应用图标的操作。以电子设备为手机为例,如图6中的a所示,用户点击手机桌面界面601上应用a的图标,设备开启应用a,在开启应用a时,应用a通过音频管理模块向音频hal传输录音请求,录音请求中包括应用a预设的音频参数,例如,应用a预设的音频参数有:音频采样率为44.1khz,时延为4ms,该时延可由前述实施例示出的“flags@0x5”指示。
99.另一种示例中,第一操作可以是用户点击录音应用界面上的录音控件的操作。以电子设备为手机为例,如图6中的b所示,用户点击手机桌面界面601上应用b的图标,设备开启应用b,显示应用b的界面602,如图6中的c所示,界面602显示有录音控件603,用户点击录音控件603,响应于该操作,应用b通过音频管理模块向音频hal传输录音请求,录音请求中包括应用b预设的音频参数,例如,应用b预设的音频参数有:音频采样率为44.1khz,时延为20ms,该时延可由前述实施例示出的“flags@0x0”指示。
100.又一种示例中,第一操作可以是用户的语音控制操作,例如用户在唤醒电子设备后,可通过说出指令词,如“开始录音”,触发录音应用向电子设备底层(如hal层)传输录音请求。
101.对于录音请求中的音频参数有如下几种示例:一种示例中,录音请求中的音频参数为电子设备支持的音频参数。
102.另一种示例中,录音请求中的音频参数为电子设备不支持的音频参数。
103.电子设备支持的音频参数,可以理解为电子设备内置的音频ic能够处理的音频参数。目前,电子设备支持的参数格式包括例如44.1khz@0x0,48khz@0x5等,不支持的参数格
式包括44.1khz@0x5等。其中44.1khz@0x0表示音频采样率为44.1khz的非低时延场景录音,48khz@0x5表示音频采样率为48khz的低时延场景录音,且要求原始音频数据(无录音算法处理), 44.1khz@0x5表示音频采样率为44.1khz的低时延场景录音,且要求原始音频数据。
104.针对录音应用提供的不同的音频参数,电子设备执行相对应的参数配置流程,具体流程参见后文实施例。
105.需要说明的是,对于同一录音应用,在不同的录音场景下,录音应用传输的录音请求中的音频参数可能不同。例如,在用户使用蓝牙耳机录音的场景下,录音应用预设的音频参数可以是44.1khz@0x0,在用户未使用蓝牙耳机录音的场景下,该录音应用预设的音频参数可以是48khz@0x5。
106.s502. 音频hal根据录音请求,确定设备是否支持录音应用预设的音频参数。
107.一种示例中,音频hal预存有电子设备支持的音频参数的信息,音频hal通过读取录音请求中录音应用提供的音频参数,确定该音频参数是否为电子设备支持的音频参数。
108.一种示例中,音频hal确定电子设备不支持录音应用预设的音频参数,执行以下步骤:s503. 音频hal配置新的音频参数。
109.一种示例中,音频hal从预存的电子设备支持的音频参数的信息中,选择合适的音频参数。配置的新的音频参数为电子设备支持的音频参数。
110.示例性的,在用户使用蓝牙耳机录音的场景下,音频hal接收到录音应用的录音请求,该录音请求中包括音频参数44.1khz@0x5,由于电子设备不支持44.1khz@0x5,音频hal可配置电子设备支持的48khz@0x5。
111.本实施例中,重新配置的音频参数中的音频采样率与录音请求中的音频采样率不同,重新配置的音频参数中的时延与录音请求中的时延相同,也即在重新配置音频参数时,音频hal不修改时延参数,仅修改音频采样率。通常情况下,重新配置的音频采样率大于录音请求中的音频采样率,例如,将音频采样率由44.1khz修改为48khz。
112.s504. 音频hal创建音频重采样模块。
113.由于音频hal没有按照录音应用提供的音频参数配置麦克风驱动,那么,在麦克风驱动获取麦克风采集的音频数据,传输至音频hal时,由于音频数据不满足录音应用要求的音频参数,需要通过本步骤创建的音频重采样模块,对麦克风采集的音频数据进行重采样,以达到录音应用对音频数据的要求。也即,创建音频重采样模块的目的在于:使得传输至录音应用的音频数据满足录音应用的预设音频参数要求。
114.s505. 音频hal向麦克风驱动传输配置的音频参数。
115.本步骤中,音频hal向麦克风驱动传输的音频参数为音频hal重新配置的音频参数。
116.上述示例中,由于电子设备不支持录音应用提供的音频参数,音频hal调整音频参数的配置,并下发配置至麦克风驱动,以便麦克风驱动基于该新的配置驱动麦克风工作,使得后续的录音流程正常运行。
117.另一种示例中,音频hal确定电子设备支持录音应用预设的音频参数,执行s505,即音频hal向麦克风驱动传输录音应用预设的音频参数。
118.示例性的,在用户未使用蓝牙耳机录音的场景下,音频hal接收到录音应用的录音
请求,该录音请求中包括音频参数48khz@0x5,由于电子设备支持48khz@0x5,音频hal直接将48khz@0x5配置给麦克风驱动。
119.上述示例中,由于电子设备支持录音应用提供的音频参数,音频hal可直接下发配置至麦克风驱动,以便麦克风驱动基于该配置驱动麦克风工作。
120.在一些实施例中,音频hal向麦克风驱动传输配置的音频参数之后,音频hal根据配置的音频参数确定缓存区(buffer)大小,可由应用程序框架层的音频管理模块根据缓存区大小创建缓存区,缓存区用于存储麦克风采集的音频数据。其中,缓存区大小与音频参数中的时延相关,时延越小,缓存区越小。例如,时延为4ms对应的缓存区小于时延为20ms对应的缓存区。可以理解的是,对于相同大小的音频数据,缓存区越小,音频hal从缓存区读取音频数据的速度越快,时延也就越小,反之亦然。
121.在一些实施例中,音频hal向麦克风驱动传输配置的音频参数之后,可执行:s506. 音频hal向音频管理模块传输配置完成的通知。
122.s507. 音频管理模块响应于配置完成的通知,创建录音线程。
123.本步骤中,音频管理模块创建录音线程,该录音线程处于未激活状态(休眠状态),在录音应用下发读音频数据的请求(s509)后,该录音线程被激活。
124.在一些实施例中,当录音线程结束时,音频管理模块删除(去激活)录音线程和缓存区。
125.s508. 音频管理模块向录音应用传输配置完成的通知。
126.s509. 录音应用向音频管理模块传输读音频数据的请求。
127.s510. 音频管理模块响应于读音频数据的请求,激活录音线程。
128.本步骤中,激活的录音线程对应发起本次录音请求的录音应用。可以理解的是,不同的录音应用可以对应不同的录音线程,各个录音线程之间相互独立。
129.s511. 音频管理模块通过音频hal向麦克风驱动传输读音频数据的请求。
130.一种示例中,音频管理模块向音频hal传输读音频数据的请求,音频hal再将读音频数据的请求传输至麦克风驱动。
131.s512. 麦克风驱动响应于读音频数据的请求,在获取麦克风采集的音频数据后,向音频hal传输麦克风采集的音频数据。
132.麦克风是基于音频hal配置的音频参数(s505)采集音频数据,因此采集的音频数据可能满足录音应用的音频要求,也可能不满足录音应用的音频要求。
133.s513. 音频hal确定是否对音频数据进行重采样。
134.由于音频hal记录有本次录音请求在音频参数配置过程(s501-s508)中的信息,因此音频hal通过查询该信息,可以确定是否需要对本次录音的音频数据进行重采样。一种示例中,音频hal直接基于录音请求配置音频参数,则无需对本次采集的音频数据进行重采样。另一种示例中,音频hal重新配置了音频参数,则需要对本次采集的音频数据进行重采样。
135.一种示例中,音频hal确定需要对音频数据进行重采样,可以执行:s514. 音频hal通过调用音频重采样模块,对音频数据进行重采样。
136.s515. 音频hal通过音频管理模块向录音应用传输录音响应,录音响应包括音频数据。
137.一种示例中,音频hal向音频管理模块传输重采样后的音频数据,音频管理模块将重采样后的音频数据传输至录音应用。
138.另一种示例中,音频hal确定不需要对音频数据进行重采样,执行s515,即音频hal向音频管理模块传输采集的音频数据,音频管理模块将该音频数据传输至录音应用,该音频数据没有经过重采样处理。
139.基于上述的示例可知,音频hal在获取到麦克风采集的音频数据后,需要确定是否需要对音频数据作进一步处理,这里主要指重采样处理,以便传输至录音应用的音频数据满足录音应用的要求。
140.在不同的录音场景下,录音应用下发的录音请求中的音频参数不同,例如在使用蓝牙耳机录音的场景下,录音请求中的音频参数为44.1khz@0x5;在用户未使用蓝牙耳机录音的场景下,录音请求中的音频参数为48khz@0x5。不同的音频参数可能对应不同的参数配置流程和读音频数据的流程。本技术实施例示出的录音方法,通过增设一个判断步骤,用于确定电子设备是否支持录音请求中的音频参数,进而执行不同的参数配置流程和读音频数据的流程。
141.1)若电子设备不支持录音请求中的音频参数,则需要配置新的音频参数,以使得电子设备中的麦克风能够正常采集音频,该新配置的音频参数为电子设备支持的音频参数。其中新配置的音频参数中音频采样率不同于录音请求中的音频采样率,例如从设备支持的音频采用率中选择,通常可以选择稍大于录音请求中的音频采样率,如录音请求中的采样率为44.1khz,新配置的采样率为48khz。新配置的音频参数中时延保持与录音请求中的时延一致,例如录音请求中的0x5指示低时延场景录音且要求原始音频数据(即不加录音算法)。在麦克风基于新配置的音频参数采集了音频数据后,由于该音频数据不满足录音应用的要求,则需要设备调用音频重采样模块对音频数据进行重采样,最终传输经重采样的音频数据至录音应用。
142.2)若电子设备支持录音请求中的音频参数,则可以直接进行音频参数配置。在麦克风基于该音频参数采集音频数据后,无需进行重采样,可直接传输音频数据至录音应用。
143.对比1)和2),虽然1)中重新配置了音频参数,但并未修改音频参数中的时延参数,时延参数决定了设备是否在录音通路上加入录音算法,由于没有修改时延参数,1)和2)的录音通路相同(如均未加入录音算法),这样两个录音通路采集的音频数据的音效不会有较大差异。上述方法可以解决如用户使用与未使用蓝牙耳机录音的音频效果差异大的问题,从而提升用户的录音体验。
144.基于上述实施例,下面通过两个具体的示例,对上述实施例的录音方法进行说明。
145.图7为本技术实施例提供的一种录音方法的流程示意图。结合图4所示的电子设备的层级结构,如图7所示,本实施例的录音方法,包括:s701. 响应于用户的第一操作,应用侧向音频hal传输录音请求,录音请求中的音频参数为48khz@0x5。
146.其中,应用侧可以理解为电子设备的应用程序层和应用程序框架层的总称。第一操作可参照上文实施例的描述,此处不再展开。
147.一种示例中,应用侧可通过调用open_input_stream()接口,向音频hal传输录音请求,请求使用如下音频参数:48khz@0x5。其中,open_input_stream()为音频hal提供的
一个接口。
148.s702. 音频hal检查音频参数,确定电子设备是否支持音频参数。
149.本实施例中,录音请求中的音频参数为48khz@0x5,是电子设备支持的音频参数,可执行:s703. 音频hal设置第一标记为第二值。
150.本实施例中,第一标记可用于指示是否需要进行音频重采样。
151.一种示例中,第一标记为第一值,可记为isneedresample=true,用于指示需要进行音频重采样。第一标记为第二值,可记为isneedresample=false,用于指示不需要进行音频重采样。
152.s704. 音频hal向麦克风驱动传输配置的音频参数,配置的音频参数为48khz@0x5。
153.本实施例中,由于录音请求中的音频参数为电子设备支持的音频参数,因此音频hal可直接将该音频参数配置给麦克风驱动。
154.s705a. 麦克风驱动向音频hal传输配置完成的通知。
155.s705b. 音频hal向应用侧传输配置完成的通知。
156.在一些实施例中,步骤s705a和s705b为可选步骤。
157.s706. 应用侧向音频hal传输读音频数据的请求。
158.s707. 音频hal向麦克风驱动传输读音频数据的请求。
159.一种示例中,应用侧可通过调用read()接口,向音频hal传输读音频数据的请求。音频hal通过调用pcm_read()接口,向麦克风驱动传输读音频数据的请求。具体来说,应用侧通过应用程序框架层的音频管理模块调用音频hal提供的接口read(),以使音频hal通过pcm_read()接口向麦克风驱动发送读音频数据的请求。pcm_read()是麦克风驱动提供的一个接口。
160.s708. 麦克风驱动向音频hal传输麦克风采集的音频数据。
161.s709. 音频hal查询第一标记为第二值。
162.s710. 音频hal向应用侧传输录音响应,录音响应包括音频数据。
163.本实施例中,由于第一标记为第二值,音频hal不需要对音频数据进行重采样,可直接向应用侧传输麦克风采集的原始的音频数据。
164.本技术实施例示出的录音方法中,应用侧下发的音频参数为设备支持的音频参数,如48khz@0x5,音频hal可设置第一标记为第二值,并直接将音频参数配置给麦克风,以便麦克风基于该音频参数采集音频数据。在读音频数据的流程中,音频hal基于第一标记的数值,确定无需对音频数据进行重采样,直接传输音频数据至应用侧,完成本次录音。
165.图8为本技术实施例提供的一种录音方法的流程示意图。结合图4所示的电子设备的层级结构,如图8所示,本实施例的录音方法,包括:s801. 响应于用户的第一操作,应用侧向音频hal传输录音请求,录音请求包括音频参数为44.1khz@0x5。录音请求中的音频参数为应用侧预设的音频参数。
166.一种示例中,应用侧可通过调用open_input_stream()接口,向音频hal传输录音请求,请求使用如下音频参数:44.1khz@0x5。其中,open_input_stream()为音频hal提供的一个接口。
167.s802. 音频hal检查音频参数,确定电子设备是否支持音频参数。
168.本实施例中,录音请求中的音频参数为44.1khz@0x5,是电子设备不支持的音频参数,因此可执行:s803. 音频hal确定新的音频参数。
169.一种示例中,音频hal从预存的电子设备支持的音频参数的信息中,选择合适的音频参数。配置的新的音频参数为电子设备支持的音频参数。示例性的,音频hal配置的新的音频参数为48khz@0x5。
170.s804. 音频hal创建音频重采样模块,设置重采样模块的参数。
171.一种示例中,音频hal通过调用create_resample()接口创建音频重采样模块。其中,create_resample()为重采样模块提供的一个接口。重采样模块的参数包括输入参数和输出参数,输入参数记为insamplerate=48k,输出参数记为44.1k。即输入参数对应的是音频hal为麦克风重新配置的音频采样率,输出参数对应的是录音请求中的音频采样率。
172.s805. 音频hal设置第一标记为第一值。
173.s806. 音频hal向麦克风驱动传输配置的新的音频参数,新的音频参数为48khz@0x5。
174.s807a. 麦克风驱动向音频hal传输配置完成的通知。
175.s807b. 音频hal向应用侧传输配置完成的通知。
176.在一些实施例中,步骤s807a和s807b为可选步骤。
177.s808. 应用侧向音频hal传输读音频数据的请求。
178.s809. 音频hal向麦克风驱动传输读音频数据的请求。
179.一种示例中,应用侧可通过调用read()接口,向音频hal传输读音频数据的请求。音频hal通过调用pcm_read()接口,向麦克风驱动传输读音频数据的请求。
180.s810. 麦克风驱动向音频hal传输麦克风采集的音频数据。
181.s811. 音频hal查询第一标记为第一值。
182.本实施例中,由于第一标记为第一值,音频hal确定需要对音频数据进行重采样,执行:s812. 音频hal通过调用音频重采样模块,获取重采样后的音频数据。
183.一种示例中,音频hal通过调用resample_from_provider()接口,使得音频重采样模块对采样率为48k的音频数据进行重采样,得到采样率为44.1k的音频数据。其中,resample_from_provider()为重采样模块提供的一个接口。
184.s813. 音频hal向应用侧传输录音响应,录音响应包括重采样后的音频参数。
185.其中,重采样后的音频数据满足应用侧的数据要求。
186.本实施例示出的录音方法,应用侧下发的音频参数为设备不支持的音频参数,如44.1khz@0x5,音频hal重新配置音频参数,如48khz@0x5,并下发该配置,新的音频参数为设备支持的音频参数,麦克风基于新的音频参数采集音频数据。此外,音频hal创建音频重采样模块,并设置第一标记为第一值。由于音频hal在参数配置时修改了采样率,使得麦克风采集的音频数据不满足应用侧的要求,因此,在音频hal传输音频数据至应用侧前,音频hal可通过查询第一标记,获知需要对音频数据进行重采样,音频hal通过调用重采样模块,对音频数据进行重采样,使得处理后的音频数据能够满足应用侧的数据要求。
187.基于前述实施例,本技术实施例提出一种录音方法,应用于电子设备,电子设备包括应用程序层的第一应用、硬件抽象层hal的音频hal以及驱动层的麦克风驱动,如图9所示,该录音方法包括:s901. 第一时刻,响应于第一应用的第一录音请求,第一录音请求包括第一应用在第一录音场景下预设的第一音频参数,音频hal为麦克风驱动配置第二音频参数,第一音频参数为电子设备不支持的音频参数,第二音频参数为电子设备支持的音频参数。
188.s902. 麦克风驱动基于第二音频参数采集音频数据。
189.s903. 第二时刻,响应于第一应用的第二录音请求,第二录音请求包括第一应用在第二录音场景下预设的第三音频参数,音频hal为麦克风驱动配置第三音频参数。
190.s904. 麦克风驱动基于第三音频参数采集音频数据。
191.其中第一时刻与第二时刻为不同的时刻,第三音频参数为电子设备支持的音频参数。
192.上述实施例中,第一应用为具有录音功能的应用,第一录音场景为电子设备连接蓝牙耳机的录音场景,第二录音场景为电子设备未连接蓝牙耳机的录音场景。
193.示例性的,在电子设备连接蓝牙耳机的录音场景下,第一应用预设的第一音频参数包括例如音频采样率44.1khz,时延4ms(可记为44.1khz@0x5),第一音频参数为电子设备不支持的音频参数,对此音频hal可以重新为麦克风驱动配置一个第二音频参数,第二音频参数为电子设备支持的音频参数,例如第二音频参数包括音频采样率48khz,时延4ms(可记为48khz@0x5)。麦克风驱动基于该新的第二音频参数中音频采样率采集音频数据。
194.示例性的,在电子设备未连接蓝牙耳机的录音场景下,第一应用预设的第三音频参数包括例如音频采样率48khz,时延4ms(可记为48khz@0x5),第三音频参数为电子设备支持的音频参数,音频hal可以直接将该第三音频参数配置给麦克风驱动,麦克风驱动基于该第三音频参数中的音频采样率采集音频数据。
195.上述示例中,第二音频参数和第三音频参数是相同的。在一些实施例中,第二音频参数和第三音频参数也可以是不同的。
196.需要指出的是,音频参数是否为电子设备支持的音频参数,需要同时考虑两项参数,如音频采样率和时延,仅单独考虑例如音频采样率是无法确定是否为电子设备支持的音频参数。例如44.1khz@0x5为电子设备不支持的音频参数,44.1khz@0x0为电子设备支持的音频参数,这两个音频参数中音频采样率均为44.1khz,仅考虑音频采样率是无法确定是否为电子设备支持的音频参数,需要结合时延来确定。
197.基于上述示例可知,用户使用同一电子设备中的第一应用,在不同录音场景下录音时,第一应用下发的录音请求中的音频参数通常是不同的,例如第一录音场景下第一应用下发的音频参数为电子设备不支持的音频参数,第二录音场景下第一应用下发的音频参数为电子设备支持的音频参数。音频hal可以对第一录音场景下的音频参数作调整,使其为电子设备支持的音频参数,例如可以将两个不同录音场景下的音频参数配置一致,这样,就不会出现同一设备两次录音的录音效果差异较大的问题,提升用户的录音体验。
198.一个可选实施例中,第二音频参数和第一音频参数中的音频采样率不同,第二音频参数和第一音频参数中的时延参数相同。
199.示例性的,第一音频参数中的音频采样率为44.1khz,第二音频参数中的音频采样
率为48khz,第一音频参数和第二音频参数中的时延均为4ms。
200.本实施例中,通过调整音频参数中的音频采样率,保持时延参数不变,为麦克风驱动重新配置音频参数,重配置的音频参数为电子设备支持的音频参数。
201.一个可选实施例中,第二音频参数与第三音频参数相同。
202.本实施例中,第二音频参数和第三音频参数相同指的是第二音频参数和第三音频参数中的音频采样率和时延均相同。示例性的,第二音频参数和第三音频参数中的音频采样率均为48khz,第二音频参数和第三音频参数中的时延均为4ms。
203.这样,用户使用同一电子设备的第一应用,分别在连接蓝牙耳机或不连接蓝牙耳机进行录音,两次录音的录音效果一致,即不会出现连接蓝牙耳机录制的音效与不连接蓝牙耳机录制的音效差异较大的问题。
204.一个可选实施例中,响应于第一应用的第一录音请求,音频hal为麦克风驱动配置第二音频参数,包括:响应于第一应用的第一录音请求,音频hal确定第一音频参数是否为电子设备支持的音频参数;在音频hal确定第一音频参数为电子设备不支持的音频参数的情况下,音频hal为麦克风驱动配置第二音频参数。
205.本实施例中,音频hal在确定第一应用下发的音频参数不满足要求时,直接为其配置新的音频参数,使得电子设备能够正常执行录音流程,用户侧不会感知到该变化。
206.一个可选实施例中,录音方法,还包括:在音频hal为麦克风驱动配置第二音频参数后,音频hal创建音频重采样模块,音频重采样模块用于根据第一音频参数中的音频采样率,对麦克风采集的音频数据进行重采样。
207.本实施例中,音频重采样模块可以看作是音频hal的一个子模块,或者,也可以看作是独立于音频hal的一个模块,音频hal可以通过调用该模块对音频数据进行重采样。
208.一个可选实施例中,电子设备还包括应用程序框架层的音频管理模块,录音方法还包括:在音频hal为麦克风驱动配置第二音频参数后,音频管理模块创建录音线程和缓存区,缓存区用于缓存麦克风采集的音频数据。
209.一个可选实施例中,麦克风驱动基于第二音频参数采集音频数据,包括:响应于第一应用的读音频数据的请求,电子设备的应用程序框架层的音频管理模块激活第一录音请求对应的录音线程;音频管理模块通过音频hal,触发麦克风驱动基于第二音频参数采集音频数据。
210.一个可选实施例中,录音方法还包括:在音频hal为麦克风驱动配置第二音频参数后,音频hal设置第一标记为第一值;其中,第一标记用于指示是否对音频数据进行重采样,第一标记为第一值用于指示对音频数据进行重采样。
211.一个可选实施例中,录音方法还包括:在音频hal从麦克风驱动获取到麦克风采集的音频数据后,音频hal确定是否对音频数据进行重采样。
212.一个可选实施例中,音频hal确定是否对音频数据进行重采样,包括:音频hal通过查询第一标记的数值,确定是否对音频数据进行重采样;若第一标记为第一值,确定对音频数据进行重采样;或者,若第一标记为第二值,确定不对音频数据进行重采样。
213.基于前述三个实施例可知,音频hal如果为麦克风重新配置的音频参数,音频hal需要做相应的记录,以便在音频hal获取到麦克风采集的音频数据后,基于该记录判断是否需要对该音频数据进行重采样。
214.一个可选实施例中,录音方法还包括:在音频hal确定对音频数据进行重采样的情况下,音频hal通过调用音频重采样模块对音频数据进行重采样,获取重采样后的音频数据;音频hal向第一应用传输重采样后的音频数据。
215.本实施例中,不论是何种录音场景下,音频hal向第一应用返回的音频数据,应满足第一应用下发的录音请求中音频采样率的要求。
216.需要说明的是,本技术实施例并未特别限定一种录音方法的执行主体的具体结构,只要可以通过运行存储有本技术实施例的一种录音方法的代码,以根据本技术实施例提供的一种录音方法进行处理即可。例如,本技术实施例提供的一种录音方法的执行主体可以是电子设备中能够调用程序并执行程序的功能模块,或者为应用于电子设备中的处理装置,例如,该处理装置为芯片。
217.上述实施例中,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。硬件电路可能包括应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其他支持所描述的功能的合适组件。
218.因此,在本技术实施例中描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
219.本技术实施例还提供一种电子设备包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得所述电子设备执行以实现上述任一方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
220.存储器可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
221.存储器可以是独立存在,通过通信线路与处理器相连接。存储器也可以和处理器集成在一起。
222.处理器可以是通用中央处理器(central processing unit,cpu),微处理器,特定应用集成电路(application-specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。
223.本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行上述实施例的技术方案,其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
224.本技术实施例提供一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行上述实施例中的技术方案,其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
225.本技术实施例提供一种计算机程序产品,包括计算机程序,当计算机程序被运行时,使得计算机执行上述实施例中的技术方案,其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
226.以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
技术特征:
1.一种录音方法,其特征在于,应用于电子设备,所述电子设备包括应用程序层的第一应用、硬件抽象层hal的音频hal以及驱动层的麦克风驱动,所述方法包括:第一时刻,响应于所述第一应用的第一录音请求,所述第一录音请求包括所述第一应用在第一录音场景下预设的第一音频参数,所述音频hal为所述麦克风驱动配置第二音频参数,所述麦克风驱动基于所述第二音频参数采集音频数据;其中,所述第一音频参数为所述电子设备不支持的音频参数,所述第二音频参数为所述电子设备支持的音频参数;第二时刻,响应于所述第一应用的第二录音请求,所述第二录音请求包括所述第一应用在第二录音场景下预设的第三音频参数,所述音频hal为所述麦克风驱动配置所述第三音频参数,所述麦克风驱动基于所述第三音频参数采集音频数据;其中,所述第一时刻与所述第二时刻为不同的时刻,所述第三音频参数为所述电子设备支持的音频参数。2.根据权利要求1所述的方法,其特征在于,所述第二音频参数和所述第一音频参数中的音频采样率不同,所述第二音频参数和所述第一音频参数中的时延参数相同。3.根据权利要求1所述的方法,其特征在于,所述第二音频参数与所述第三音频参数相同。4.根据权利要求1所述的方法,其特征在于,响应于所述第一应用的所述第一录音请求,所述音频hal为所述麦克风驱动配置所述第二音频参数,包括:响应于所述第一应用的所述第一录音请求,所述音频hal确定所述第一音频参数是否为所述电子设备支持的音频参数;在所述音频hal确定所述第一音频参数为所述电子设备不支持的音频参数的情况下,所述音频hal为所述麦克风驱动配置所述第二音频参数。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述音频hal为所述麦克风驱动配置所述第二音频参数后,所述音频hal创建音频重采样模块,所述音频重采样模块用于根据所述第一音频参数中的音频采样率,对麦克风采集的音频数据进行重采样。6.根据权利要求1所述的方法,其特征在于,所述电子设备还包括应用程序框架层的音频管理模块,所述方法还包括:在所述音频hal为所述麦克风驱动配置所述第二音频参数后,所述音频管理模块创建录音线程和缓存区,所述缓存区用于缓存所述麦克风采集的音频数据。7.根据权利要求1所述的方法,其特征在于,所述麦克风驱动基于所述第二音频参数采集音频数据,包括:响应于所述第一应用的读音频数据的请求,所述电子设备的应用程序框架层的音频管理模块激活所述第一录音请求对应的录音线程;所述音频管理模块通过所述音频hal,触发所述麦克风驱动基于所述第二音频参数采集音频数据。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述音频hal为所述麦克风驱动配置所述第二音频参数后,所述音频hal设置第一标记为第一值;其中,所述第一标记用于指示是否对音频数据进行重采样,所述第一标记为所述第一
值用于指示对音频数据进行重采样。9.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述音频hal从所述麦克风驱动获取到麦克风采集的音频数据后,所述音频hal确定是否对所述音频数据进行重采样。10.根据权利要求9所述的方法,其特征在于,所述音频hal确定是否对所述音频数据进行重采样,包括:所述音频hal通过查询第一标记的数值,确定是否对所述音频数据进行重采样;若所述第一标记为第一值,确定对所述音频数据进行重采样;或者若所述第一标记为第二值,确定不对所述音频数据进行重采样。11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:在所述音频hal确定对所述音频数据进行重采样的情况下,所述音频hal通过调用音频重采样模块对所述音频数据进行重采样,获取重采样后的音频数据;所述音频hal向所述第一应用传输所述重采样后的音频数据。12.一种电子设备,其特征在于,包括:处理器和存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,使得所述电子设备执行如权利要求1至11任一项所述的方法。13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至11任一项所述的方法。14.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机执行如权利要求1至11任一项所述的方法。
技术总结
本申请提供一种录音方法、设备及存储介质,应用于电子设备,电子设备包括第一应用、音频HAL以及麦克风驱动。响应于第一应用的第一录音请求,第一录音请求包括第一应用在第一录音场景预设的第一音频参数,音频HAL为麦克风驱动配置第二音频参数,麦克风驱动基于第二音频参数采集音频;第一音频参数为电子设备不支持的音频参数,第二音频参数为电子设备支持的音频参数。响应于第一应用的第二录音请求,第二录音请求包括第一应用在第二录音场景预设的第三音频参数,音频HAL为麦克风驱动配置第三音频参数,麦克风驱动基于第三音频参数采集音频;第三音频参数为电子设备支持的音频参数。该方法使得电子设备在不同录音场景下录制的音频效果无较大差异。的音频效果无较大差异。的音频效果无较大差异。
技术研发人员:张瑜
受保护的技术使用者:荣耀终端有限公司
技术研发日:2023.08.29
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/