CN116170632A - 一种声音补偿方法及装置 - Google Patents
一种声音补偿方法及装置 Download PDFInfo
- Publication number
- CN116170632A CN116170632A CN202211713567.4A CN202211713567A CN116170632A CN 116170632 A CN116170632 A CN 116170632A CN 202211713567 A CN202211713567 A CN 202211713567A CN 116170632 A CN116170632 A CN 116170632A
- Authority
- CN
- China
- Prior art keywords
- time
- sound
- compensation
- parameter
- data
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4394—Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请适用于通讯设备技术领域,提供了一种声音补偿方法及装置,包括:根据第一参数、第一缓存容量以及缓存持续时间,确定第一等待时长;执行声音捕获,并记录第一时间;在所述第一等待时长结束后,判断是否检测到声音数据;如果未检测到声音数据,记录第二时间并确定第一异常时长;确定所述第一异常时长是否大于等于第一时间阈值;在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧;基于所述第一补偿帧,对系统声音进行静音补偿。本申请通过上述方式有效避免了在视频录制或直播过程中,因存在未捕获到音频的时间段致使音画不同步的问题,精准匹配捕获的音频数据与视频画面数据,极大提高了用户使用体验。
Description
技术领域
本申请属于通讯设备技术领域,尤其涉及一种声音补偿方法及装置。
背景技术
伴随着短视频、视频直播以及录播产业的兴起,越来越多的用户开始使用录播或直播的方式进行交流。然而,在录屏和视频直播时,系统并不会全程都能捕获到声音(例如,用户讲话停顿或长时间沉默)。这种情况很容易造成捕获的音频采样时长少于视频采样时长,致使在视频文件播放时,出现音画不同步的情况。音画不同步,顾名思义,是指播放的视频画面与播放的声音不同步。具体地,即视频画面未更新,但音频已经开始播放的现象。
图1是一个音频采样总时长的示例图。如图1所示,总共的声音捕获时间从A段开始,经过B段,再到C段结束。其中,A段与C段是正常捕获系统声音的时间段(例如,电脑在该时间段内正在持续播放歌曲),B段是未能正常捕获到声音的时间段,即无音频输出的时间段。正常情况下,获取到的音频信息仅包括A段和C段。即实际音频文件仅有A段语音包和C段语音包。在进行音视频播放时,因缺少B段的音频数据,会造成播放B段视频画面时,同时播放C段的音频的状况。
在现有技术中,只有在发录制的视频或观看直播的人员反馈出现音画不同步之后,操作人员才能进行处理。对录制的视频可以通过后期补录声音数据,或拉长或缩短A段或C段的音频时长,来对齐正确的视频时间点和音频时间点。然而人工补录耗时费力,还容易出错。
发明内容
本申请实施例提供了一种声音补偿方法及装置,可以解决在视频录制或直播过程中系统自动跳过无声音时间段,导致音画不同步的问题。
第一方面,本申请实施例提供了一种声音补偿方法,包括:
根据第一参数、第一缓存容量以及缓存持续时间,确定第一等待时长,其中,所述第一等待时长是指捕获声音的等待时长,所述第一参数用于表征声音的采样率,所述第一缓存容量用于表征缓存声音数据的空间容量大小;
执行声音捕获,并记录第一时间,其中,所述第一时间是指声音捕获的开始时间;
在所述第一等待时长结束后,判断是否检测到声音数据;
如果未检测到声音数据,记录第二时间并确定第一异常时长,其中,所述第二时间是指未检测到声音数据的时间,所述第一异常时长指未捕获到声音数据的持续时长,所述第一异常时长是根据所述第一时间和所述第二时间确定的;
确定所述第一异常时长是否大于等于第一时间阈值;
在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧,所述第一补偿帧是指需要进行静音补偿的语音数据帧;
基于所述第一补偿帧,对系统声音进行静音补偿。在本申请实施例中,在获取到声音输出格式后,反算出每个阶段声音捕获所需的声音捕获时间;在每个阶段中依次执行声音捕获和检测是否捕获到声音数据包的流程,直至整个声音捕获时间段结束。其中,在每次确定到未捕获到声音数据包后,确定捕获异常时长,并在确定大于第一时间阈值的前提下,对捕获异常时长对应的时间段执行音频数据补偿。相比于现有技术,本申请实施例提供的声音补偿方法,有效避免了在视频录制或直播过程中,因音频采样时存在未捕获到音频的时间段,导致系统跳过没有音频数据的时间段,最终音频采样时长与视频画面无法同步,即致使音画不同步的问题,精准匹配捕获的音频数据与视频画面数据,极大提高了用户使用体验,并且无需后期人工补录,节省了大量的时间成本。
在一种可能的实现方式中,所述方法还包括:所述方法还包括:获取声音输出格式,所述声音输出格式包括:所述第一参数、第二参数、第三参数,其中,所述第二参数用于表征声音的采样通道个数,所述第三参数用于表征采样字节数。
在一种可能的实现方式里,所述方法还包括:
如果在所述第一等待时长结束之后检测到声音数据包,记录第三时间,所述第三时间是检测到声音数据的时间;
将所述第一时间更新为所述第三时间;
按照所述第一等待时长,从所述第三时间开始执行声音捕获;
在所述第一等待时长结束后,判断是否检测到声音数据;
如果未检测到声音数据,记录第四时间并确定第二异常时长,其中,所述第四时间是指未检测到声音数据的时间,所述第二异常时长是根据所述第三时间和所述第四时间确定的。
在一种可能的实现方式里,所述在所述第一等待时长结束后,判断是否检测到声音数据,包括:在所述第一等待时长结束后,调用接口;根据接口返回的数值,判断是否检测到声音数据。
在一种可能的实现方式中,所述基于所述第一补偿帧,对系统声音进行静音补偿,包括:在确定所述第一补偿帧的数量后,根据所述第一补偿帧的时间属性,将所述第一补偿帧插入系统存储的声音数据队列中的对应位置;
其中,所述确定第一补偿帧的数量,包括:根据所述第一参数和所述第一等待时长,确定所述第一补偿帧的单位数据量,所述单位数据量用于表征单个采样通道内补充所述第一等待时长的音频所需的音频帧数量;根据所述第二参数、所述第三参数、所述单位数据量,确定所述第一补偿帧的总数量。
也就是说,因第一补偿帧的本身具有时间属性,所以在接收到所述第一补偿帧后,会根据其上携带的时间信息,将其安插入依先后顺序排列的声音数据包队列中,再由系统的音频输出模块依次播放或存储成视频文件。通过上述操作,可以使得音频采样时长与视频采样时长一致,并且在长时间未捕获到声音数据包的前提下,对无音频的时间段自动补充入补偿包,确保后期捕获的声音数据包能精准对应到正确的视频画面时间点,并且避免了出现音画不同步的问题。
在一种可能的实现方式里,所述第一补偿帧的数量满足下式:
CN=C*NB*SF,其中,CN表示所述第一补偿帧的数量,C表示所述第二参数,NB表示所述第三参数,SF表示所述第一补偿帧的单位数据量。
在一种可能的实现方式里,所述方法还包括:所述第一时间阈值是根据所述第一参数和所述单位数据量确定的。
也就是说,通过预设第一时间阈值,提高了系统识别未捕获到声音数据的异常时间段的准确性。
第二方面,本申请实施例提供了一种声音补偿装置,包括:用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块(或单元)。
第三方面,本申请实施例提供了一种声音补偿装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。具体地,所述处理器执行所述计算机程序时实现上述第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,本申请实施例提供了一种音频系统,所述音频系统可以捕获并输出音频,并对音频捕获过程中,对无音频数据的时间段执行音频数据补偿操作,例如,对所述第一方面所述方法中的无音频时间段执行补偿,并输出与视频画面时间点精确匹配的音频。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述方法的步骤。
第六方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得声音补偿装置执行上述第一方面或第一方面的任意可能的实现方式中的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例针对在视频录制或直播过程中,存在音画不同步的问题,提出了一种声音补偿方法,在每个阶段的声音捕获结束后,确定是否检测到声音数据包,从而确定未捕获到音频的异常时间段,并对所述异常时间段补充音频数据。避免了后期音频采样时间点与视频采样时间点无法匹配的问题,降低了视频录制的成本与耗费的精力,提高了视频文件的质量,以及提高了用户使用体验度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一个音频采样总时长的示例图;
图2是本申请实施例提供的针对音频系统捕获声音的一个场景示意图;
图3是本申请实施例提供的声音补偿方法的流程示意图;
图4是本申请实施例提供的声音补偿方法的一个示例流程图;
图5是本申请实施例提供的声音补偿装置的结构框图;
图6是本申请实施例提供的声音补偿装置的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的声音补偿方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
在一种可能的应用场景中,本申请实施例提供的声音补偿方法可适用涉及于录屏以及桌面视频直播的应用场景,尤其涉及到音视频的录制和音视频的播放。
在音视频的录制阶段,用户进行音频和视频录制,系统对录制的音频数据和视频数据进行编码,并将编码后的音频数据和视频数据按照一定的格式合成到的视频文件。在音视频的播放阶段,系统将视频文件按照一定的格式分离,得到编码后的音频数据和视频数据,分别对音频数据和视频数据进行解码,并同步播放音视频。
具体地,在音视频的录制阶段,自然界的声音经过音频输入模块(例如,麦克风)采集,得到模拟信号,紧接着系统捕获音频输入模块发出的模拟信号,获得数字信号。在这过程中,模拟信号需要经过采样、量化和编码三个步骤才能转化为数字信号。其中,采样是指按照一定的频率,对连续的模拟信号进行采集并记录;量化是指采用多少位的二进制数字来表示采集得到的数据;编码是指将采样量化后的数据按照一定的格式进行记录(例如,顺序存储或压缩储存)。简而言之,音频采集的过程就是连续的模拟信号向离散的数字信号转换的过程。
从音频系统的角度出发,在录屏或直播的过程中,音频系统的声音捕获流程可以大致分为以下四步:
(1)根据配置的参数,初始化音频系统内部的缓冲区;
(2)采集原始的音频数据;
(3)创建管理项目,并不断从缓冲区读取采集的音频数据;
(4)停止采集,释放资源(例如,发送给系统的音频输出模块进行实时播放,或保存为音频文件)
以下结合图2中的具体场景进行示例描述。
图2是本申请实施例提供的在录屏以及桌面视频直播时,音频系统捕获声音的一个场景示意图。如图2所示,音频系统包括音频输入模块、音频处理模块、音频输出模块以及用户。
所述音频输入模块用于将用户发出的声音转换为电信号,并输入到音频处理模块中。
所述音频处理模块,用于捕获音频输入模块输入的音频流,并将捕获的音频数据输出给音频输出模块。
所述音频输出模块用于将音频处理模块输出的音频数据转换为相应的声音信号,并辐射到空间中,以供用户直接聆听。
应理解,本申请实施例提供的音频系统适用于Windows系统、Linux系统、安卓系统(Android系统)、苹果移动操作系统(iPhone Operating System,iOS)等等。本申请实施例并不进行具体的限制。
再结合前文图1中的示例进行描述,声音捕获的总时间从A段开始,经过B段,再到C段结束。但是由于B段没有捕获到声音,系统采样会直接跳过未能正常捕获到声音的B段,最终获取到的声音数据包括A段声音数据包和C段声音数据包。
在本申请实施例中,针对在声音捕获阶段,所述音频系统中出现某一时间段未捕获到声音数据包(例如,讲话人间歇停顿或长时间沉默)的情况,为保证后续捕获到的音频数据可以对应到正确的视频画面时间点,对无音频输出的异常时间段进行音频数据补充(例如,系统在捕获过程中,判定图1的B段发生异常,通过将本申请实施例生成的补偿包,按照时间属性插入到捕获到的A段声音数据包和C段的声音数据包之间,从而使得后期输出的音频数据包括A段声音数据包、B段补偿包以及C段声音数据包),以避免在录播或直播过程中出现音画不同步的问题。
有鉴于此,本申请处理一种声音补偿方法,能够自动对无声音输出的自然时间进行静音补偿,不但能够确保音频采样时长与视频采样时长一致,而且能够对音频采样和视频采样进行精准匹配,从而解决音画不同步的问题,同时能够提升用户使用和观看体验。
为便于本领域技术人员理解,以下将结合图3至图4描述本申请实施例执行声音补偿的过程。
图3是本申请实施例提供的声音补偿方法的流程示意图。应理解,作为示例而非限定,图3中的方法可以应用于图1所示的应用场景中。如图3所示,所述方法包括以下步骤:
步骤S110:根据第一参数、第一缓存容量以及缓存持续时间,确定第一等待时长,其中,所述第一等待时长是指捕获声音的等待时长,所述第一参数用于表征声音的采样率,所述第一缓存容量用于表征缓存声音数据的空间容量大小。
应理解,此处的第一等待时长,只是为了便于描述,并不对本申请实施例的保护范围构成限定。
示例性地,所述第一参数表示声音的采样率。采样率是指每秒在每个声道上采样的个数。
所述第一缓存容量是指缓存声音数据的空间容量大小,所述缓存声音数据的空间容量大小实际为系统分配的实际缓存容量。
所述缓存持续时间是声音数据存储最大时长。如同MP3的存储上限是100首歌曲,超过了100首歌曲,便无法再缓存歌曲一样,设置缓存持续时间为五个小时,那么存储在缓冲区的所有音频的时长总和不得超过五小时。所述缓存持续时间相当于缓冲区的最大容量或者最大长度。
可选地,步骤S110,包括:采用以下公式计算所述第一等待时长:
其中,sleeptime表示所述第一等待时长,T表示所述缓存持续时间,B表示所述第一缓存容量,S表示所述第一参数。
本申请实施例对所述第一等待时长的单位不做具体地限定。在一种可能的实现方式里,所述第一声音捕获时间的单位是毫秒。
应理解,上述仅作为示例进行描述确定所述第一等待时长的方式,本申请实施例对确定所述第一等待时长的具体方式不作限定。
可选地,在一种可能的实现方式里,在步骤S110之前,所述方法还包括:获取声音输出格式,所述声音输出格式包括:所述第一参数、第二参数、第三参数,其中,所述第二参数用于表征声音的采样通道个数,所述第三参数用于表征采样字节数。
需要说明的是,通过获取声音输出格式,以便获得声音输出格式的相关参数进行计算。并且,获取的声音输出格式还需与系统捕获的声音格式统一(或者说格式相同),以避免出现声音失真的情况。
示例性地,在一种可能的实现方式里,调用系统接口,例如,IAudioClient::Initialize接口,获取声音输出格式。在另一种可能的实现方式里,所述系统接口,还用于初始化音频内部的缓冲区。
示例性地,在一种可能的实现方式里,在调用系统接口后,通过系统接口,例如,IAduioClient::GetBufferSize,来获取第一缓存容量。此处的第一缓存容量是系统实际使用的缓冲区大小或缓存区空间容量,其常用单位包括KB、MB等。
可选地,在一种可能的实现方式里,通过修改系统中的缓冲时长来设置所述缓存持续时间。此处设置缓存持续时间相当于指定缓冲区存储空间的最大值。
应理解,上述仅作为示例进行描述声音输出格式的获取方式,本申请实施例对获取声音输出格式的具体方式不作限定。
应理解,上述仅作为示例进行描述缓存持续时间的获取方式,本申请实施例对获取缓存持续时间的具体方式不作限定。
应理解,上述仅作为示例进行描述第一缓存容量的获取方式,本申请实施例对获取第一缓存容量的具体方式不作限定。
应理解,此处的第一等待时长,仅是示例性描述,所述第一等待时长还可以有其他的命名方式,例如,系统声音捕获等待时间。本申请实施例对此不作具体限定。
应理解,此处第一缓存容量,仅是示例性描述,所述第一缓存容量还可以有其他的命名方式,例如,系统分配的实际缓存。本申请实施例对此不作具体限定。
步骤S120:执行声音捕获,并记录第一时间,其中,所述第一时间是指声音捕获的开始时间。
示例性地,在开始声音捕获前,记录第一时间。在第一等待时长里,系统执行声音捕获。
应理解,本申请实施例对于声音捕获的执行方式,不做具体的限制。
示例性地,在一种可能的实现方式里,在第一等待时长内,通过系统中的音频输入模块(例如,麦克风)捕获连续的模拟信号,将其转换为数字信号并存储于音频内部的缓冲区。
应理解,上述仅作为示例进行描述执行声音捕获的方式,本申请实施例对执行声音捕获的具体方式不作限定。
应理解,此处的第一时间,仅是示例性描述,所述第一时间还可以有其他的命名方式,例如,当前捕获开始时间或beginT。本申请实施例对此不作具体限定。
步骤S130:在所述第一等待时长结束后,判断是否检测到声音数据。
如果未检测到声音数据,执行步骤S140-1;如果检测到声音数据,执行步骤S140-2-1至步骤S140-2-4(此步骤将在后文描述)。
需要说明的是,在第一等待时长结束后,系统需要判断是否有捕获到声音数据,以便基于判断结果执行后续操作。
本申请实施例对检测声音数据的具体手段不作限定。可选地,在一种可能的实现方式里,在声音捕获结束后,调用系统接口,所述系统接口用于获取声音数据;根据所述系统接口返回的空值,确定所述声音数据未检测到。
示例性地,所述系统接口是IAudioClient::GetNextPacketSize。所述IAudioClient::GetNextPacketSize接口用于获取新保存的声音数据中音频帧个数。
示例性地,在所述第一等待时长结束后,调用系统接口,例如,IAudioClient::GetNextPacketSize接口,根据系统接口返回的数值,判断是否检测到声音数据。
例如,若返回了空值,则确定声音数据未检测到;若返回的数值大于0,即IAudioClient::GetNextPacketSize接口获取到语音帧,则确定检测到声音数据。也就是说,可通过不同的取值,获知系统在第一等待时长内是否捕获到声音数据。
应理解,上述仅作为示例进行描述确定是否检测到声音数据,本申请实施例对确定是否检测到声音数据的具体方式不作限定。
步骤S140-1:如果未检测到声音数据,记录第二时间并确定第一异常时长,其中,所述第二时间是指未检测到声音数据的时间,所述第一异常时长指未捕获到声音数据的持续时长,所述第一异常时长是根据所述第一时间和所述第二时间确定的。
应理解,此处引入“第一”、“第二”、“第三”、“第四”等术语,仅是为了对本申请实施例中不同阶段的异常时长、捕获时间等进行区分,而并非仅限于此。
示例性地,在接连两个阶段的声音捕获时间段内,系统检测到未能检测到声音数据,则进入异常处理流程,并获取未检测到声音数据的时间。
应理解,本申请实施例对于计算第一异常时长的方式,不做具体限制。
可选地,在一种可能的实现方式里,所述第一异常时长是根据所述第一时间和所述第二时间确定的,包括:所述第一异常时长为所述第二时间减去所述第一时间的时长。示例性地,所述第一异常时长是指超过第一等待时长后,仍未捕获到声音数据的时间段。
示例性地,假设在完成A段的声音捕获后,系统开始执行B段的声音捕获。所述第一时间表示声音捕获开始的时间,所述第二时间表示未检测到声音数据的时间,并与所述第一时间间隔整数倍的第一等待时长,也可以理解为系统察觉当前异常的时间。此处的第一时间可以理解为图1中B段的左端点,第二时间可以理解为图1中B段的右端点。在获取到所述第一时间和第二时间后,通过两者的差值,可以确定第一异常时长的长度(例如,B段的长度)。
应理解,此处示例仅为了便于理解。在实际情况中,第一异常时长的长度要远小于B段的长度。可选地,在一种可能的方式里,采用以下公式计算所述第一异常时长:
第一异常时长=第二时间-第一时间
示例性地,在另一种可能的实现方式里,所述第一时间也称为beginT,所述第二时间也称为endT,所述第一异常时长也称为duration。上述计算第一异常时长的公式也可以表述为:
duration=endT-bedinT
应理解,上述仅作为示例进行描述确定所述第一异常时长的方式,本申请实施例对确定所述第一异常时长的具体方式不作限定。
可选地,在另一种可能的实现方式里,也可以对每次采样的实际时长进行计时,并通过调用系统命令直接返回数值,从而获得第一异常时长。本申请实施例对此不做具体地限制。
应理解,上述仅作为示例描述确定第一异常时长的方式,本申请实施例对确定第一异常时长的具体方式不作限定。
应理解,此处的第一异常时长,仅是示例描述,所述第一异常时长还可以有其他的命名方式,例如,捕获异常时长。对此,本申请不做限制。
应理解,此处的第二时间,仅是示例性描述,所述第二时间还可以有其他的命名方式,例如,当前异常开始时间。本申请实施例对此不作具体限定。
步骤S150:确定所述第一异常时长是否大于等于第一时间阈值。
示例性地,若确定步骤S150中确定的所述第一异常时长大于等于第一时间阈值,则后续需要对相应的时间段,执行静音补偿操作,或者说,对相应的时间段补充入声音数据。
可选地,在一种可能的实现方式里,所述方法还包括:所述第一时间阈值是根据所述第一参数和第一补偿帧的单位数据量确定的。其中,第一补偿帧的单位数据量是指在单个采样通道内补充第一等待时长长度的音频所需的音频帧数量,所述第一补偿帧的单位数据量是根据所述第一参数和所述第一等待时长确定。
可选地,步骤S150,包括:采用以下公式计算第一时间阈值:
其中,MaxT表示所述第一时间阈值,SF表示第一补偿帧的单位数据量,S表示所述声音输出格式中的采样率。
应理解,上述仅作为示例进行描述确定所述第一时间阈值的方式,本申请实施例对确定所述第一时间阈值的具体方式不作限定。
本申请实施例对所述第一时间阈值的单位不做具体地限定。在一种可能的实现方式里,所述第一时间阈值的单位是微秒。
应理解,尽管在步骤S150中才引入第一补偿帧的单位数据量的概念,以及在后续才给出第一补偿帧的单位数据量的计算公式。但在实际操作中,在步骤S110的计算第一等待时长时,所述第一补偿帧的单位数据量就已确定了。在此处才引出仅是为了便于理解如何获得第一时间阈值。
需要说明的是,步骤S110中确定的第一等待时长是计算的固定值。此处的第一时间阈值是允许不补入音频补偿数据的最大时间值。
需要说明的是,在确定所述第一异常时长小于或等于第一时间阈值,并不会执行声音补偿操作,而是会进入下一个声音捕获流程,执行声音捕获,并判断是否检测到声音数据。原因在于,首先,所述第一时间阈值的单位为微秒,例如,所述第一时间阈值为50微秒,即0.00005秒。其次,在声音捕获阶段声音是持续稳定输出的,并不会出现多个不连续的、不超过第一时间阈值的、以微秒为尺度的静音期或有声期。且对于用户而言,察觉到存在几十微秒的静音空白是几乎不可能的。因此,即使在某一个判断周期中,产生了不超过所述第一时间阈值的空白,也不会对用户产生影响;即若所述第一异常时长小于所述第一时间阈值,可以不用执行声音补偿。应理解,本申请实施例对于确定第一时间阈值的方式,不做具体限制。
应理解,此处的第一时间阈值,仅是示例性描述,所述第一时间阈值还可以有其他的命名方式,例如,最大等待时间。本申请实施例对此不作具体限定。
通过设置第一时间阈值,可以更好地判定未能捕获到音频数据的异常时间段,提高了连续获取系统声音的可能性,从而确保了音频采样文件的稳定输出。
步骤S160:在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧,所述第一补偿帧是指需要进行静音补偿的语音数据帧。
示例性地,在所述第一异常时长大于等于第一时间阈值时,需要对所述第一异常时长执行静音补偿,即对无音频输出的异常事件段补充声音数据。在执行静音补偿之前,需要确定补充的声音数据的数量,即第一补偿帧的数量。
应理解,本申请实施例对于确定第一补偿帧的方式,不做具体限制。
可选地,在一种可能的实现方式里,所述在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧,包括:根据所述第一参数和所述第一等待时长,确定所述第一补偿帧的单位数据量,所述单位数据量用于表征单个采样通道内补充所述第一等待时长的音频所需的音频帧数量;根据所述第二参数、所述第三参数、所述单位数据量,确定所述第一补偿帧的总数量。
示例性地,在一种可能的实现方式里,步骤S160,根据所述声音的采样率和第一等待时长,确定第一补偿帧的单位数据量;根据所述声音的采样通道、所述声音的采样字节数、所述单位数据量,确定第一补偿帧的总数量。可选地,包括:采用以下公式计算第一补偿帧的总数量:
CN=C*NB*SF
其中,CN表示所述第一补偿帧的总数量,C表示所述第二参数,NB表示所述第三参数,SF表示所述第一补偿帧的单位数据量。
其中,所述第一补偿帧的单位数据量的计算公式如下:
其中,SF表示所述第一补偿帧的单位数据量,sleeptime表示所述第一等待时长,S表示所述第一参数。
应理解,上述仅作为示例进行描述确定所述第一补偿帧的方式,本申请实施例对确定所述第一补偿帧的具体方式不作限定。
应理解,此处的第一补偿帧的单位数据量,仅是示例性描述,所述第一补偿帧的单位数据量还可以有其他的命名方式,例如,静音补偿帧数量。本申请实施例对此不作具体限定。
应理解,此处的第一补偿帧,仅是示例性描述,所述第一补偿帧还可以有其他的命名方式,例如,补偿包。本申请实施例对此不作具体限定。
步骤S170:基于所述第一补偿帧,对系统声音进行静音补偿。
示例性地,对所述第一异常时长对应的时间段,执行音频补偿操作,或者说,对相应的时间段补充入声音数据。所述声音数据可以是静音数据,也可以是白噪音数据,本申请实施例对此不做具体限制。
可选地,在一种可能的方式里,所述基于所述第一补偿帧,对系统声音进行静音补偿,包括:根据所述第一补偿帧的时间属性,将所述第一补偿帧发送给系统存储的声音数据队列;按照所述第一补偿帧,填充第一异常时长。
示例性地,仍以图1为例进行描述,B段是未能正常捕获到声音的时间段,即无音频输出的时间段。在确定B段时长超过第一时间阈值后,对B段执行静音补偿操作。确定补偿操作所需第一补偿帧,并将所述第一补偿帧发送至系统存储的声音数据队列。因第一补偿帧的数据本身具有时间属性(因参与计算的采样率可以换算到对应的具体时间),所以系统接收到第一补偿帧后,会根据其上携带的时间信息,将第一补偿帧安插入按照捕获时间先后顺序排列的声音数据队列中(即插入捕获的A段和C段的声音数据之间,通过所述第一补偿帧,填充B段)。
具体比如,在声音捕获阶段,系统已捕获到A段声音数据包(在开始的第1-5毫秒)和C段声音数据包(在第6-15毫秒)。在确认B段(第5-6毫秒)属于异常时长后,根据本申请实施例的方法计算出填充B段所需的第一补偿帧数量,并将所述第一补偿帧发送至系统存储声音数据的队列。在存储声音数据的队列中,所有声音数据包严格按照捕获时间先后顺序排列,最先捕获的声音数据排在最先输出的位置,所述第一补偿帧进入存储声音数据的队列后,也根据其上的时间信息存放。上述将第一补偿帧插入声音数据包之间的操作,也可以理解为所谓的填充B段的音频。
需要说明的是,上述的示例仅是为了便于理解,本申请实施例并不局限于此。在实际情况中,因某些原因(例如,在A段持续稳定输出的歌曲,因网络延迟)导致播放卡顿,那么B段,或者说外界声音处于静音状态的时间,会更长,例如,为几十秒、几分钟。根据本申请实施例提供的方法,在B段(播放卡顿的时间段)中会不断重复循环补充第一等待时长长度的补偿帧,直至C段(歌曲重新稳定播放)开始。
通过上述操作,可以使得在声音捕获阶段,确保音频采样时长与视频采样时长一致,并且在长时间未捕获到声音的前提下,对无音频的时间段自动补充入声音数据,确保后期捕获的声音数据对应到正确的视频画面时间点,从而避免了出现音画不同步的问题。
在本申请实施例中,在获取到声音输出格式后,反算出每个阶段声音捕获所需的声音捕获时间;在每个阶段中依次执行声音捕获和检测是否捕获到声音数据的流程,直至整个声音捕获时间段结束。其中,在每次确定到未捕获到声音数据后,确定实际的声音捕获异常时长,并在确定所述声音捕获异常时长大于第一时间阈值的前提下,对捕获异常时长执行音频数据补偿。相比于现有技术,本申请实施例提供的声音补偿方法,有效避免了在视频录制或直播过程中,因存在未捕获到音频的时间段,导致系统跳过没有音频数据的时间段,最终音频采样时长与视频画面无法同步,即致使音画不同步的问题,精准匹配捕获的音频数据与视频画面数据,极大提高了用户使用体验。
需要说明的是,为了方便理解,本申请实施例是以整个声音捕获时间段中第一等待时长为例进行描述,并非是将整个声音捕获时间段限制为仅有一次声音捕获。在实际操作中,整个声音捕获时间段包括多个声音捕获时间段。本申请实施例对此不做限制。
在图3所示的方法的基础上,本申请另一实施例提供了在步骤130中,若在第一等待时长结束后,检测到声音数据包的示例。
示例性地,在第一等待时长结束后,调用系统接口,根据返回的大于0的数值,确定捕获到声音数据包。
可选地,在一种可能的实现方式里,图3所示出的方法还包括:
步骤S140-2-1,如果在所述第一等待时长结束之后检测到声音数据包,记录第三时间,所述第三时间是检测到声音数据的时间;
步骤S140-2-2,将所述第一时间更新为所述第三时间;
步骤S140-2-3,按照所述第一等待时长,从所述第三时间开始执行声音捕获;在所述第一等待时长结束后,判断是否检测到声音数据;
步骤S140-2-4,如果未检测到声音数据,记录第四时间并确定第二异常时长,其中,所述第四时间是指未检测到声音数据的时间,所述第二异常时长是根据所述第三时间和所述第四时间确定的。
示例性地,若在步骤120结束声音捕获之后,检测到声音数据包,则会进入下一轮的声音捕获流程,更新声音捕获开始时间,再次在第一等待时长内重新执行声音捕获,重复上述流程。在重新执行声音捕获的流程中,类似的,在第一等待时长结束后,仍需检测是否存在声音数据包。其中,在每轮声音捕获流程结束后,都需要根据返回的检测结果,判断是否存在异常时长,并根据第一时间阈值判断是否需要对异常时长执行静音补偿。若返回的检测结果显示正常,则会重新进入下一轮的声音捕获流程,直至整个声音捕获阶段结束。
应理解,步骤S140-2-3与步骤S140-2-4的具体实现过程可参考上述步骤S120-步骤S140-1。为了简洁,此处不再赘述。
应理解,此处的声音数据包,仅是示例性描述,所述声音数据包还可以有其他的命名方式,例如,捕获包。本申请实施例对此不作具体限定。
为便于本领域技术人员理解,以下结合图4中的具体例子描述本申请提供的声音补偿方法。应理解,图4中的例子仅仅是为了便于本领域技术人员理解本申请实施例提供的声音补偿方法,并非要将本申请实施例限于例示的具体场景。本领域技术人员根据图4中的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本申请实施例的范围内。
图4是本申请实施例提供的声音补偿方法的一个示例流程图。可以理解,作为示例而非限定,图4中的方法可以应用于图1所示的应用场景中。图4中涉及到的相关术语或解释可以参考前文描述,下文不再赘述。如图4所示,具体包括以下步骤:
步骤S1:获取声音输出格式。
应理解,为避免音频输出模块输出的音质受损或影响用户体验,声音输出格式应当与声音输入格式保持一致。因此,确定声音输出格式,需要首先获取系统捕获的声音输入格式。
示例性地,通过调用IAudioClient::GetMixFormat接口来获取系统捕获的声音输入格式。可选地,所述声音输入格式包括以下参数中的一项或多项:采样率、采样通道、采样字节数。
示例性地,根据获取的声音输入格式,调用IAudioClient::Initialize接口,确定系统声音输出格式,具体地,所述系统声音输出格式也包括以下参数中一项或多项:采样率、采样通道、采样字节数。
应理解,具体的获取声音输出格式的方式,可参考本申请实施例提供的图3以及步骤S110,为了简洁,此处不再赘述。
步骤S2:确定缓存持续时间和实际缓存大小。
应理解,本申请实施例对于设置缓存时间的方式,不做具体的限制。具体的确定缓存时间的方式,可参考本申请实施例提供的步骤S110,为了简洁,此处不再赘述。
应理解,本申请实施例对于确定实际缓存的方式,不做具体的限制。
示例性地,系统启动后调用IAduioClient::GetBufferSize接口,以获取系统分配的实际缓存大小。
具体的确定实际缓存的方式,可参考本申请实施例提供的步骤S110,为了简洁,此处不再赘述。
步骤S3:计算系统声音捕获等待时间。
应理解,此处的“系统声音捕获等待时间”是上文步骤S110中的术语“第一等待时长”的另一种表达方式。
需要说明的是,此处计算出的系统声音捕获等待时间并非整个声音捕获等待时间段。整个声音捕获等待时间段包括多段声音捕获等待时间。在每个声音捕获等待时间内,系统捕获外界声音,或接收音频输入模块产生的电信号。
可选地,根据在步骤S1中获取的声音输出格式和步骤S2中的实际缓存和缓存时间,确定系统声音捕获等待时间。
应理解,具体的计算系统声音捕获等待时间的方式,可参考本申请实施例提供的步骤S110,为了简洁,此处不再赘述。
步骤S4:开始声音捕获。
示例性地,在步骤S3中计算出系统声音捕获等待时间之后,开始第一阶段的声音捕获。在开始声音捕获之前,记录当前捕获时间。
步骤S5:在当前声音捕获等待时间结束后,判断是否检测到捕获包。
应理解,此处的“捕获包”是上文步骤S130中的术语“声音数据包”的另一种表达方式。
示例性地,在第一阶段的声音捕获结束以后,调用IAudioClient::GetNextPacketSize接口,来检测是否有捕获包,即检测到有系统声音产生。
示例性地,若在步骤S5中检测到捕获包,则直接进入步骤S9,将该捕获包依次发送给音频输出模块,并更新当前捕获开始时间,从而表示此时间点之前的声音捕获正常。系统进入第二阶段的声音捕获流程。其中,所述声音捕获流程包括:步骤S4:在声音捕获时间内,执行捕获操作;步骤S5:在声音捕获时间结束后,判断是否检测到捕获包。具体地,系统不断重复步骤S4和步骤S5的流程,直至整个声音捕获时间段结束。
示例性地,若未检测到语音包,则进入异常处理流程,进入步骤S6。
应理解,具体的判断是否检测到捕获包的方式,可参考本申请实施例提供步骤S130,为了简洁,此处不再赘述。
步骤S6:计算捕获异常时长。
应理解,此处的“捕获异常时长”是上文步骤S140中的术语“第一异常时长”的另一种表达方式。
示例性地,获取当前捕获异常时间和当前捕获时间,确定捕获异常时长。
应理解,具体的计算捕获异常时长的方式,可参考本申请实施例提供的步骤S140,为了简洁,此处不再赘述。
步骤S7:判断所述捕获异常时长是否大于最大等待时间。
应理解,此处的“最大等待时间”是上文步骤S150中的术语“第一时间阈值”的另一种表达方式。
示例性地,在一种可能的实现方式里,根据步骤S1中获取的声音输出格式和步骤S2中设置的缓存时间,计算最大捕获等待时间。
示例性地,若在步骤S6中确定的捕获异常时长大于最大捕获等待时间,则对捕获异常时长对应的时间段补偿音频数据。所述音频数据既可以是静音数据,也可以是白噪音数据。
应理解,具体的计算最大捕获等待时间,以及确定超过最大捕获等待时间的方式,可参考本申请实施例提供的步骤S150,为了简洁,此处不再赘述。
步骤S8:计算补偿包中需要的补偿数量。
应理解,此处的“补偿包”是上文步骤S160中的术语“第一补偿帧”的另一种表达方式。
应理解,具体的计算补偿包中需要的补偿数量的方式,可参考本申请实施例提供的步骤S160,为了简洁,此处不再赘述。
步骤S9:发送补偿包/捕获包。
示例性地,在步骤S5中,检测到捕获包时,则直接将所述捕获包发送至系统的缓存区。其中,所述捕获包中包括捕获的声音数据。
示例性地,在步骤S5中,未检测到捕获包,则依次经步骤S6计算捕获异常时长、步骤S7判断是否大于异常时长、步骤S8计算补偿包的补偿数量,并在步骤S9将所述补偿包发送至系统的缓存区。其中,所述补偿包中包括用于静音补偿的静音数据或白噪音数据。
应理解,本申请实施例对于发送补偿包和捕获包的方式,并没有具体的限定。
示例性地,所述补偿包根据其上的时间属性,精准插入到音频数据播放队列,对系统未捕获到音频的异常时间段执行填充。
应理解,具体的发送补偿包的方式,可参考本申请实施例提供的步骤S170,为了简洁,此处不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的声音补偿方法,图5示出了本申请实施例提供的声音补偿装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,该装置500包括:包括确定单元510、声音捕获单元520、检测单元530、静音补偿单元540。
在一些可能的实现方式里,所述确定单元510,用于根据第一参数、第一缓存容量以及缓存持续时间,确定第一等待时长,其中,所述第一等待时长是指捕获声音的等待时长,所述第一参数用于表征声音的采样率,所述第一缓存容量用于表征缓存声音数据的空间容量大小;
在一些可能的实现方式里,所述声音捕获单元520,用于执行声音捕获,并记录第一时间,其中,所述第一时间是指声音捕获的开始时间;
在一些可能的实现方式里,所述检测单元530,用于在所述第一等待时长结束后,判断是否检测到声音数据;
可选地,所述检测单元530,用于在所述第一等待时长结束后,判断是否检测到声音数据,包括:
在所述第一等待时长结束后,调用接口;
根据接口返回的数值,判断是否检测到声音数据。
在一些可能的实现方式里,所述确定单元510还用于,如果未检测到声音数据,记录第二时间并确定第一异常时长,其中,所述第二时间是指未检测到声音数据的时间,所述第一异常时长指未捕获到声音数据的持续时长,所述第一异常时长是根据所述第一时间和所述第二时间确定的;
在一些可能的实现方式里,所述确定单元510还用于,确定所述第一异常时长是否大于等于第一时间阈值;
在一些可能的实现方式里,所述确定单元510还用于,在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧,所述第一补偿帧是指需要进行静音补偿的语音数据帧;
在一些可能的实现方式里,所述静音补偿单元540,用于基于所述第一补偿帧,对系统声音进行静音补偿。
可选地,所述静音补偿单元540,用于基于所述第一补偿帧,对系统声音进行静音补偿,包括:
在确定所述第一补偿帧的数量后,根据所述第一补偿帧的时间属性,将所述第一补偿帧插入系统存储的声音数据队列中的对应位置;
其中,所述确定第一补偿帧,包括:
根据所述第一参数和所述第一等待时长,确定所述第一补偿帧的单位数据量,所述单位数据量用于表征单个采样通道内补充所述第一等待时长的音频所需的音频帧数量;
根据所述第二参数、所述第三参数、所述单位数据量,确定所述第一补偿帧的总数量。
可选地,所述装置500还包括:
获取声音输出格式,所述声音输出格式包括:所述第一参数、第二参数、第三参数,其中,所述第二参数用于表征声音的采样通道个数,所述第三参数用于表征采样字节数。
可选地,所述装置500还包括:如果在所述第一等待时长结束之后检测到声音数据包,记录第三时间,所述第三时间是检测到声音数据的时间;
将所述第一时间更新为所述第三时间;
按照所述第一等待时长,从所述第三时间开始执行声音捕获;
在所述第一等待时长结束后,判断是否检测到声音数据;
如果未检测到声音数据,记录第四时间并确定第二异常时长,其中,所述第四时间是指未检测到声音数据的时间,所述第二异常时长是根据所述第三时间和所述第四时间确定的。
可选地,所述第一补偿帧的总数量满足下式:CN=C*NB*SF,其中,CN表示所述第一补偿帧的总数量,C表示所述第二参数,NB表示所述第三参数,SF表示所述第一补偿帧的单位数据量。
可选地,所述装置500还包括:所述第一时间阈值是根据所述第一参数和所述单位数据量确定的。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图6为本申请一实施例提供的声音补偿装置的结构示意图。如图6所示,该实施例的声音补偿装置6包括:至少一个处理器60(图6中仅示出一个)处理器、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述任意各个声音补偿方法实施例中的步骤。
所述声音补偿装置/终端设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该声音补偿装置/终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是声音补偿装置/终端设备6的举例,并不构成对声音补偿装置/终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),该处理器60还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61在一些实施例中可以是所述声音补偿装置/终端设备6的内部存储单元,例如声音补偿装置/终端设备6的硬盘或内存。所述存储器61在另一些实施例中也可以是所述声音补偿装置/终端设备6的外部存储设备,例如所述声音补偿装置/终端设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述声音补偿装置/终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种网络设备,该网络设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种声音补偿方法,应用于声音捕获阶段,其特征在于,包括:
根据第一参数、第一缓存容量以及缓存持续时间,确定第一等待时长,其中,所述第一等待时长是指捕获声音的等待时长,所述第一参数用于表征声音的采样率,所述第一缓存容量用于表征缓存声音数据的空间容量大小;
执行声音捕获,并记录第一时间,其中,所述第一时间是指声音捕获的开始时间;
在所述第一等待时长结束后,判断是否检测到声音数据;
如果未检测到声音数据,记录第二时间并确定第一异常时长,其中,所述第二时间是指未检测到声音数据的时间,所述第一异常时长是指未捕获到声音数据的持续时长,所述第一异常时长是根据所述第一时间和所述第二时间确定的;
确定所述第一异常时长是否大于等于第一时间阈值;
在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧,所述第一补偿帧是指需要进行静音补偿的语音数据帧;
基于所述第一补偿帧,对系统声音进行静音补偿。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取声音输出格式,所述声音输出格式包括:所述第一参数、第二参数、第三参数,其中,所述第二参数用于表征声音的采样通道个数,所述第三参数用于表征采样字节数。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
如果在所述第一等待时长结束之后检测到声音数据包,记录第三时间,所述第三时间是检测到声音数据的时间;
将所述第一时间更新为所述第三时间;
按照所述第一等待时长,从所述第三时间开始执行声音捕获;
在所述第一等待时长结束后,判断是否检测到声音数据;
如果未检测到声音数据,记录第四时间并确定第二异常时长,其中,所述第四时间是指未检测到声音数据的时间,所述第二异常时长是根据所述第三时间和所述第四时间确定的。
4.根据权利要求1或2所述的方法,其特征在于,所述在所述第一等待时长结束后,判断是否检测到声音数据,包括:
在所述第一等待时长结束后,调用接口;
根据接口返回的数值,判断是否检测到声音数据。
5.根据权利要求1或2所述的方法,其特征在于,所述基于所述第一补偿帧,对系统声音进行静音补偿,包括:
在确定所述第一补偿帧的数量后,根据所述第一补偿帧的时间属性,将所述第一补偿帧插入到系统存储的声音数据队列中的对应位置;
其中,所述确定第一补偿帧,包括:
根据所述第一参数和所述第一等待时长,确定所述第一补偿帧的单位数据量,所述单位数据量用于表征单个采样通道内补充所述第一等待时长的音频所需的音频帧数量;
根据所述第二参数、所述第三参数、所述单位数据量,确定所述第一补偿帧的总数量。
7.根据权利要求5或6所述的方法,其特征在于,所述第一补偿帧的数量满足下式:CN=C*NB*SF,其中,CN表示所述第一补偿帧的数量,C表示所述第二参数,NB表示所述第三参数,SF表示所述第一补偿帧的单位数据量。
8.根据权利要求1或2所述的方法,其特征在于,
所述第一时间阈值是根据所述第一参数和所述单位数据量确定的。
10.一种声音补偿装置,应用于声音捕获阶段,其特征在于,包括确定单元、声音捕获单元、检测单元、静音补偿单元,其中:
所述确定单元,用于根据第一参数、第一缓存容量以及缓存持续时间,确定第一等待时长,其中,所述第一等待时长是指捕获声音的等待时长,所述第一参数用于表征声音的采样率,所述第一缓存容量用于表征缓存声音数据的空间容量大小;
所述声音捕获单元,用于执行声音捕获,并记录第一时间,其中,所述第一时间是指声音捕获的开始时间;
所述检测单元,用于在所述第一等待时长结束后,判断是否检测到声音数据;
所述确定单元还用于,如果未检测到声音数据,记录第二时间并确定第一异常时长,其中,所述第二时间是指未检测到声音数据的时间,所述第一异常时长指未捕获到声音数据的持续时长,所述第一异常时长是根据所述第一时间和所述第二时间确定的;
所述确定单元还用于,确定所述第一异常时长是否大于等于第一时间阈值;
所述确定单元还用于,在所述第一异常时长大于等于第一时间阈值时,确定第一补偿帧,所述第一补偿帧是指需要进行静音补偿的语音数据帧;
所述静音补偿单元,用于基于所述第一补偿帧,对系统声音进行静音补偿。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211713567.4A CN116170632A (zh) | 2022-12-29 | 2022-12-29 | 一种声音补偿方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211713567.4A CN116170632A (zh) | 2022-12-29 | 2022-12-29 | 一种声音补偿方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116170632A true CN116170632A (zh) | 2023-05-26 |
Family
ID=86414123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211713567.4A Pending CN116170632A (zh) | 2022-12-29 | 2022-12-29 | 一种声音补偿方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116170632A (zh) |
-
2022
- 2022-12-29 CN CN202211713567.4A patent/CN116170632A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108076226B (zh) | 一种通话质量调整的方法、移动终端及存储介质 | |
CN110312146B (zh) | 音频处理方法、装置、电子设备和存储介质 | |
WO2020024945A1 (zh) | 确定时间戳的方法和装置 | |
CN107682752B (zh) | 视频画面显示的方法、装置、系统、终端设备及存储介质 | |
CN110267083B (zh) | 音视频同步的检测方法、装置、设备及存储介质 | |
CN108521612B (zh) | 视频摘要的生成方法、装置、服务器及存储介质 | |
CN112995730A (zh) | 音画同步调整方法、装置、电子设备及介质 | |
CN110888619A (zh) | 数字音频功放同步电路及方法、电子设备 | |
CN109495776B (zh) | 一种音频发送、播放的方法及智能终端 | |
CN111324576B (zh) | 一种录音数据保存的方法、装置、存储介质及终端设备 | |
US20030208359A1 (en) | Method and apparatus for controlling buffering of audio stream | |
CN109218849B (zh) | 一种直播数据的处理方法、装置、设备和存储介质 | |
CN116170632A (zh) | 一种声音补偿方法及装置 | |
WO2020024949A1 (zh) | 确定时间戳的方法和装置 | |
US20160142456A1 (en) | Method and Device for Acquiring Media File | |
EP3503563A1 (en) | Computer system and method for synchronous data transmission of multiple data streams | |
CN112437315B (zh) | 适应多系统版本的音频适配方法及系统 | |
CN110677777B (zh) | 一种音频数据处理方法、终端及存储介质 | |
CN108335706B (zh) | 一种多媒体文件的无缝播放方法、终端设备及存储介质 | |
CN109830243B (zh) | 音效处理方法、装置及计算机设备 | |
CN113470673A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN113261300A (zh) | 音频发送、播放的方法及智能电视 | |
CN111866422B (zh) | 录像数据上传方法、装置、设备及计算机可读存储介质 | |
CN106341519B (zh) | 音频数据处理方法和装置 | |
US20210067788A1 (en) | Information processing apparatus, information processing method, and storage medium |
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 |