一种音频录制方法和系统
技术领域
本发明涉及音频录制技术,更具体地说,涉及一种音频录制方法和系统。
背景技术
现有技术中,解决音频录制问题通常采用声卡内录方式实现。主要实现方法如图1所示。内录方式主要是通过声卡驱动提供的录制端口实现对各种音频源(如系统声音、软件声音、网络音乐等等)的获取,主要有以下缺陷:
1)现在的声卡驱动越来越少支持内录功能,有些系统可以支持有些系统不能支持,导致软件功能不统一;
2)内录功能中,各种声卡实现方式不统一,有些音频效果很差,不能符合软件质量需求;
3)严重依赖于计算机的声卡,录制效率低。
因此,有必要提供一种改进的音频录制方式。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述声卡或系统不支持、音频效果差、依赖硬件、录制效率低的缺陷,提供一种音频录制方法和系统。
本发明解决其技术问题所采用的技术方案是:构造一种音频录制方法,其特征在于,包括步骤:
S1)安装虚拟声卡驱动程序,由操作系统自动加载虚拟声卡,并将虚拟声卡设置为系统的默认声卡;
S2)向操作系统申请一段内存;
S3)所述虚拟声卡接收经操作系统处理的来自各种音频源的音频数据;
S4)将虚拟声卡接收的音频数据存储至所述内存;
S5)读取所述内存中的音频数据;
S6)对经读取步骤读取到的音频数据进行编码;
S7)将编码结果保存至音频文件。
在本发明提供的音频录制方法中,步骤S4进一步包括:以循环覆盖的方式不断地存储第一预设时间间隔的音频数据,并设置第一标识用来指示最新存储的音频数据。
在本发明提供的音频录制方法中,步骤S5进一步包括:设置第二标识位置,所述第二标识用于指示未读取且存储最早的音频数据,读取第二标识所指示的音频数据。
在本发明提供的音频录制方法中,在步骤S3和步骤S4之间还包括步骤:
S8)判断虚拟声卡是否已停止接收音频数据,若是,则进入步骤S9;若否,则进入步骤S4;
在步骤S8和步骤S5之间还包括:
S9)判断所述内存中的音频数据是否读取完,若是,则将所述内存中音频数据清零;若否,则进入步骤S5。
在本发明提供的音频录制方法中,在步骤S5和步骤S6之间还包括:
S10)对经读取步骤读取到的音频数据进行音效处理,所述音效处理包括变声、变调、改变时间。
本发明还提供了一种音频录制系统,包括:
安装和加载单元:用于安装虚拟声卡驱动程序,由操作系统自动加载虚拟声卡,并将虚拟声卡设置为系统的默认声卡,向操作系统申请一段内存;
存储单元:用于将虚拟声卡所接收的音频数据存储至所述内存,所述音频数据包括经操作系统处理的来自各种音频源的数据;
读取单元:用于读取所述内存中的音频数据;
编码单元:用于对经读取单元读取到的音频数据进行编码;
生成单元:用于将编码结果保存至音频文件。
在本发明提供的音频录制系统中,所述存储单元,进一步用于以循环覆盖的方式不断地存储第一预设时间间隔的音频数据,并设置第一标识用来指示最新存储的音频数据。
在本发明提供的音频录制系统中,所述读取单元,进一步用于设置第二标识位置,所述第二标识用于指示未读取且存储最早的音频数据,读取第二标识所指示的音频数据。
在本发明提供的音频录制系统中,还包括:
第一判断单元:判断虚拟声卡是否已停止接收音频数据,若是,则进入第二判断单元;若否,则进入存储单元;
第二判断单元:判断所述内存中的音频数据是否读取完,若是,则将所述内存中音频数据清零,录制结束;若否,则进入读取单元。
在本发明提供的音频录制系统中,还包括:
音效处理单元:包括对经读取步骤读取到的音频数据进行音效处理,所述音效处理包括变声、变调、改变时间。
实施本发明的技术方案,具有以下有益效果:充分的利用了计算机虚拟设备支持能力,解决了现有技术中声卡或系统不支持的问题,而且在录制过程中不依赖于计算机的硬件设备而是在计算机内存中直接进行,录制效率比较高,录制效果比较好。另外还可以根据需要对音频进行各种音效处理,达到变声、变调、改变时间等等的效果。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是现有技术中声卡内录方法的实现过程示意图;
图2是依据本发明优选实施例的虚拟声卡录制方法的实现过程示意图;
图3是依据本发明优选实施例的音频录制方法的流程图;
图4是依据本发明优选实施例的音频录制系统的结构示意图;
图5是依据本发明优选实施例的虚拟声卡内部数据控制方法示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种音频录制方法和系统,充分的利用了计算机虚拟设备支持能力,解决了现有技术中声卡或系统不支持的问题,而且在录制过程中不依赖于计算机的硬件设备而是在计算机内存中直接进行,录制效率比较高,录制效果比较好。另外还可以根据需要对音频进行各种音效处理,达到变声、变调、改变时间等等的效果。
图1是现有技术中声卡内录方法的实现过程示意图。主要是通过声卡驱动提供的录制端口实现对各种音频源(如系统声音、软件声音、网络音乐等等)的获取,主要有声卡或系统不支持、音频效果差、依赖硬件、录制效率低的缺陷。
图2是依据本发明优选实施例的虚拟声卡录制方法的实现过程示意图。虚拟声卡是建立在微软的虚拟设备驱动模型和声卡驱动模型上的一种虚拟设备技术,虚拟设备其实就是安装在操作系统上,模拟某种硬件工作模式的驱动实例。通过虚拟声卡将所有来自系统本身的、应用软件的、网络的音频源数据解码后生成WAVE格式的无压缩音频数字信号,并向虚拟声卡的数据通道发送音频数据,各路音频数据送往声卡数据通道后,操作系统会对这些数据进行混音,以达到最后只有一个流动效果。将虚拟声卡接收的音频数据保存至内存中,再进行相应地编码,最后形成音频文件,保存到磁盘中。当然也可以将虚拟声卡接收的音频数据发往实际声卡,实现音频的播放。下文将做详细的阐述。
图3是依据本发明优选实施例的音频录制方法的流程图。如图3所示,方法100开始于步骤101,随后,在下一步骤102中包括:安装虚拟声卡驱动,由操作系统自动加载虚拟声卡,并将虚拟声卡设置为系统的默认声卡;向操作系统申请一段内存。区域大小为例如5M(大约可容纳500毫秒的音频数据),当然本申请包括并不局限于5M这个数据。
随后下一步骤103,虚拟声卡接收经操作系统处理的来自各种音频源的音频数据。操作系统将所有来自系统本身的、应用软件的、网络的音频源数据解码后生成WAVE格式的无压缩音频数字信号,并向虚拟声卡的数据通道发送音频数据,各路音频数据送往声卡数据通道后,操作系统会对这些数据进行混音,以达到最后只有一个流动效果。
然后进入第一判断步骤104,判断虚拟声卡是否已停止接收音频数据,若是,则进入第二判断步骤1010;若否,则进入存储步骤105。
对于步骤105,以循环覆盖的方式不断地存储第一预设时间间隔的音频数据,并设置第一标识用来指示最新存储的音频数据,即数据的最前端。这里的第一预设时间间隔可以是100ms或其他可能的间隔。虚拟内存每接收到100ms的音频数据,就将此100ms数据存储在内存中,并用一个标识标注此最新存储的数据的位置。这里的第一标识指本领域常用的“写指针”,但此处只用来示例,并用于限制本申请。
若虚拟声卡未停止接收音频数据,则经过步骤105后进入步骤106,读取所述内存中的音频数据。在此步骤设置第二标识位置使其指示未读取且存储最早的音频数据,读取第二标识所指示的音频数据。第二标识紧跟在第一标识后面大约100毫秒左右的地方,这样做的目的是为了保持数据的进入和发出时间间隔很小,可以基本保证读写的同步,看视频时候能够保证音视频同步。如果读快了一些,第二标识停止前进,如果写快了,由于写的数据来源于系统,不能等待,所以必须加快读取速度,否则会导致音频数据丢失。这里的第二标识指本领域常用的“读指针”,但此处只用来示例,并用于限制本申请。
对于第二判断步骤1010,判断内存中的音频数据是否读取完(在本实施例中,也即,判断第二标识与第一标识是否指向同一个音频数据),若是,则将所述内存中音频数据清零,以免读取之前保存的数据内容产生重复性噪音,而清零的数据内容在音频数据里是静音的;然后进入步骤1012,即录制结束;若否,则进入读取步骤106。
经过步骤106处理后,进入下一步骤107,此步骤根据用户需要来选择,若用户希望对音频数据进行音效处理,例如变声、变调、改变时间等等,则进行此步骤,若不需要,可以省略此步骤,直接进入步骤108。
对于步骤108,对经读取步骤读取到的音频数据进行编码,可以选择任何格式的音频编码器,这要视用户需要来定。
随后,进入下一步骤109,将编码后的结果保存到文件,生成音频文件保存到磁盘。
最后,方法100结束于步骤1012,录制结束。
本发明还提供了一种音频录制系统,下面结合图4对其进行详细说明。
图4是依据本发明优选实施例的音频录制系统的结构示意图。如图4所示,音频录制系统包括安装和加载单元201、存储单元203、读取单元204、编码单元206、生成单元207、第一判断单元202、第二判断单元208。
安装和加载单元201用于安装虚拟声卡驱动,由操作系统自动加载虚拟声卡,并将虚拟声卡设置为系统的默认声卡;向操作系统申请一段内存。虚拟声卡接收经操作系统处理的来自各种音频源的音频数据。
存储单元203用于将虚拟声卡所接收的音频数据存储至内存,音频数据包括经操作系统处理的来自各种音频源的数据。以循环覆盖的方式不断地存储第一预设时间间隔的音频数据,并设置第一标识用来指示最新存储的音频数据。这里的第一预设时间间隔可以是100ms或其他可能的间隔。
计算机内存每接收到100ms的音频数据,就将此100ms数据存储在内存中,并用一个标识标注此最新存储的数据的位置。图5是依据本发明优选实施例的虚拟声卡内部数据控制方法示意图,即存储单元203循环覆盖存储和读取单元204读取数据的方法示意图。
读取单元204用于读取内存中的音频数据。设置第二标识位置,用于指示未读取且存储最早的音频数据,读取第二标识所指示的音频数据。如图5所示,第二标识紧跟在第一标识后面大约100毫秒左右的地方,这样做的目的是为了保持数据的进入和发出时间间隔很小,可以基本保证读写的同步,看视频时候能够保证音视频同步。如果读快了一些,第二标识停止前进,如果写快了,由于写的数据来源于系统,不能等,所以必须加快读取速度,否则会导致音频数据丢失。这里的第二标识指本领域常用的“读指针”,但此处只用来示例,并用于限制本申请。
编码单元206用于对经读取单元204读取到的音频数据进行编码。
生成单元207用于将编码结果保存到音频文件。
第一判断单元202判断虚拟声卡是否已停止接收音频数据,若是,则进入第二判断单元208;若否,则进入存储单元203;
第二判断单元208用于判断所述内存中的音频数据是否读取完(在本实施例中,也即,判断第二标识与第一标识是否指向同一个音频数据);若是,则将所述内存中音频数据清零;若否,则进入读取单元204。
根据用户需要,还可以包括音效处理单元205,用于对经读取单元204读取到的音频数据进行音效处理,该音效处理包括例如变声、变调、改变时间等等。这样用户可以得到自己想要的具有特殊音效的音频文件。
另外,本发明提供的音频录制方法和系统,如图2所示,经过读取步骤或读取单元204出来的数据可直接发送给真实声卡,真实声卡将音频数字信号编码成模拟信号发送给喇叭,完成最后的播放。同样可根据用户需要,把经过音效处理步骤或音效处理单元的音频数据直接发送给真实声卡,真实声卡将音频数字信号编码成模拟信号发送给喇叭,完成最后的播放,用户可以得到自己想要的具有特殊音效的声音。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。