一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

合成声卡和麦克风声音的方法、装置和相关组件与流程

2021-10-24 09:11:00 来源:中国专利 TAG:麦克风 声卡 组件 合成 装置


1.本发明涉及处理音频信号领域,尤其涉及一种合成声卡和麦克风声音的方法、装置和相关组件。


背景技术:

2.在直播教学过程中,在pc端进行语音通话时,使用麦克风传递电脑声音和麦克风声音时,会产生噪声和回音,而单独传递麦克风声音又没有电脑声音,严重影响了教学过程中pc上的音频、视频播放等操作,所以现在急需一种可以同时传递电脑声音和麦克风声音,避免麦克风声音输出到声卡产生噪声和回音的方法。


技术实现要素:

3.本发明的目的是提供一种合成声卡和麦克风声音的方法、装置和相关组件,旨在解决现有麦克风声音输出到声卡后会产生噪声和回音问题。
4.为解决上述技术问题,本发明的目的是通过以下技术方案实现的:提供一种合成声卡和麦克风声音的方法,其包括:
5.枚举音频采集设备,得到包含声卡和麦克风的枚举列表,从所述枚举列表查询对应的音频采集源;
6.根据所述音频采集源采集声卡音频数据和麦克风音频数据,将所述声卡音频数据和所述麦克风音频数据分别写入声卡音频数据缓冲区和麦克风音频数据缓冲区中;
7.以声卡音频数据的获取时间为基准,将所述声卡音频数据缓冲区的声卡音频数据和所述麦克风音频数据缓冲区中的麦克风音频数据加入到同一个集合,并传递至混合音频数据缓冲区进行混合处理,得到混合音频数据;
8.对所述混合音频数据进行格式转换,并通过网络传输后,使用系统api传递格式转换后的所述混合音频数据至声卡处播放。
9.另外,本发明要解决的技术问题是还在于提供一种合成声卡和麦克风声音的装置,其包括:
10.枚举单元,用于枚举音频采集设备,得到包含声卡和麦克风的枚举列表,从所述枚举列表查询对应的音频采集源;
11.写入单元,用于根据所述音频采集源采集声卡音频数据和麦克风音频数据,将所述声卡音频数据和所述麦克风音频数据分别写入声卡音频数据缓冲区和麦克风音频数据缓冲区中;
12.混合单元,用于以声卡音频数据的获取时间为基准,将所述声卡音频数据缓冲区的声卡音频数据和所述麦克风音频数据缓冲区中的麦克风音频数据加入到同一个集合,并传递至混合音频数据缓冲区进行混合处理,得到混合音频数据;
13.播放单元,用于对所述混合音频数据进行格式转换,并通过网络传输后,使用系统api传递数据至声卡处播放。
14.另外,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的合成声卡和麦克风声音的方法。
15.另外,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的合成声卡和麦克风声音的方法。
16.本发明实施例公开了一种合成声卡和麦克风声音的方法、装置和相关组件,其中,方法包括:枚举音频采集设备,得到包含声卡和麦克风的枚举列表,从所述枚举列表查询对应的音频采集源;根据所述音频采集源采集声卡音频数据和麦克风音频数据,将所述声卡音频数据和所述麦克风音频数据分别写入声卡音频数据缓冲区和麦克风音频数据缓冲区中;以声卡音频数据的获取时间为基准,将所述声卡音频数据缓冲区的声卡音频数据和所述麦克风音频数据缓冲区中的麦克风音频数据加入到同一个集合,并传递至混合音频数据缓冲区进行混合处理,得到混合音频数据;对所述混合音频数据进行格式转换,并通过网络传输后,使用系统api传递格式转换后的所述混合音频数据至声卡处播放。该方法可以同时传递电脑声音与麦克风声音,避免产生噪声和回音,有效的提高了用户的听觉效果。
附图说明
17.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为本发明实施例提供的合成声卡和麦克风声音的方法的流程示意图;
19.图2为本发明实施例提供的合成声卡和麦克风声音的装置的示意性框图;
20.图3为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
21.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
22.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
23.还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
24.还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
25.请参阅图1,图1为本发明实施例提供的合成声卡和麦克风声音的方法的流程示意图;
26.如图1所示,该方法包括步骤s101~s104。
27.s101、枚举音频采集设备,得到包含声卡和麦克风的枚举列表,从所述枚举列表查询对应的音频采集源;
28.s102、根据所述音频采集源采集声卡音频数据和麦克风音频数据,将所述声卡音频数据和所述麦克风音频数据分别写入声卡音频数据缓冲区和麦克风音频数据缓冲区中;
29.s103、以声卡音频数据的获取时间为基准,将所述声卡音频数据缓冲区的声卡音频数据和所述麦克风音频数据缓冲区中的麦克风音频数据加入到同一个集合,并传递至混合音频数据缓冲区进行混合处理,得到混合音频数据;
30.s104、对所述混合音频数据进行格式转换,并通过网络传输后,使用系统api传递格式转换后的所述混合音频数据至声卡处播放。
31.在实际使用场景下,麦克风音频数据的间隔时间不确定,而声卡音频数据的间隔时间是可以预设的,例如将声卡音频数据的间隔时间设置为20ms,所以以声卡音频数据的获取时间为基准,将同一间隔时间内的麦克风音频数据和声卡音频数据加入到同一个集合中;通过本实施例中提供的合成方法可以同时传递电脑声音与麦克风声音,避免产生噪声和回音,有效的提高了用户的听觉效果。
32.具体一实施例中,步骤s101中枚举音频采集设备,包括:创建directshow设备,通过麦克风设备或声卡声音捕捉设备名称,从directshow设备中创建音频采集源。
33.其中,步骤s102包括以下步骤:
34.s1021、采集声卡音频数据和麦克风音频数据,同时注册用于接受声卡音频数据和麦克风音频数据的回调函数,通过所述回调函数接收声卡音频数据和麦克风音频数据;
35.在一实施例中,步骤s1021包括以下步骤:
36.s1022、创建音频解码线程,通过所述音频解码线程循环从声卡音频原数据和麦克风原数据中获取原始音频包,并解码得到声卡音频解码数据和麦克风音频解码数据;
37.s1023、对所述声卡音频解码数据和所述麦克风音频解码数据格式转换,得到相同格式的声卡音频数据和麦克风音频数据。
38.具体的,分析音频采集源中的流信息,并根据音频采集源中的流信息创建音频解码器,通过音频解码器对采集到的声卡音频数据和麦克风音频数据进行解码;创建音频格式转换器,对解码后的声卡音频数据和麦克风音频数据进行转换,转换成相同格式的声卡音频数据和麦克风音频数据,即转换成相同的音频输出通道、采样率以及采样格式,有利于后期对声卡音频数据和麦克风音频数据进行合成。
39.在一实施例中,步骤s102还包括以下步骤:
40.s1024、判断所述声卡音频数据缓冲区或麦克风音频数据缓冲区是否已满;
41.若所述声卡音频数据缓冲区或麦克风音频数据缓冲区已满,则丢弃所述声卡音频数据缓冲区或麦克风音频数据缓冲区中指定大小的数据,并将当前的所述声卡音频数据或麦克风音频数据写入。
42.本实施例中各步骤的标号仅为方便说明,不代表对各步骤执行顺序的限定,在实际应用时,可以根据需要各步骤执行顺序进行调整,或同时进行,这些调整或者替换均属于本发明的保护范围。
43.在一实施例中,还包括以下步骤:
44.s100、预先根据音频波形数据格式waveformat,创建32位浮点型的麦克风音频数据缓冲区、32位浮点型的声卡音频数据缓冲区、32位浮点型的混合音频数据缓冲区;
45.s1001、根据所述32位浮点型的混合音频数据缓冲区创建用于将32位浮点型音频数据转化为16位pcm音频数据的转换器。
46.其中,waveformat是由微软提供的一种音频波形数据格式;pcm(pulse code modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。
47.在一实施例中,步骤s103包括:
48.s1031、根据需要输出的音频帧大小,创建叠加字节数组destbuffer,并分别从所述声卡音频缓冲区和所述麦克风音频缓冲区中读取相同大小的声卡字节数组sourcebuffer1和麦克风字节数组sourcebuffer2;
49.s1032、循环遍历所述声卡字节数组sourcebuffer1和所述麦克风字节数组sourcebuffer2,把对应的所述声卡字节数组sourcebuffer1和所述麦克风字节数组sourcebuffer2叠加到字节数组destbuffer上。
50.具体的,音频帧大小由下式计算得出:
51.framesize=(samplerate/1000)
×
(timeperframe)
52.其中,framesize表示音频帧大小,单位字节,samplerate表示采样率,即采样频率,每秒采样数据个数,单位hz,timeperframe表示每帧间隔时间,单位ms,例如将samplerate设为8000赫兹,将timeperframe设为20ms即声卡音频数据的获取时间间隔。
53.步骤s1032中叠加后的字节数组destbuffer的计算方法如下:
54.destbuffer[n]=destbuffer[n] sourcebuffer[n]
[0055]
其中,n表示0~帧大小的索引序号,sourcebuffer表示sourcebuffer1或sourcebuffer2。
[0056]
在c#中,数组的访问一般是通过索引进行访问和赋值,为了提高性能和速度,使用是的c 指针,采用取地址进行相加运算,提高速度和效率。
[0057]
在一实施例中,所述步骤s104包括:
[0058]
s1041、将32位浮点型的声卡音频数据和麦克风音频数据进行音量调节和裁剪;
[0059]
s1042、将调节和裁剪后的32位浮点型的声卡音频数据和麦克风音频数据均转化为16位pcm音频数据。
[0060]
通过对32位浮点型的声卡音频数据和麦克风音频数据进行音量调节和裁剪,减少混合音频数据的爆破音,以提高听觉效果。
[0061]
在一实施例中,还包括以下步骤:
[0062]
s1043、调用系统方法,传递dll参数文件名称,获取模块指针;
[0063]
s1044、调用系统方法,传递模块指针和模块函数名称,返回对应的函数方法指针;
[0064]
s1045、通过所述函数方法指针导出函数并进行封装。
[0065]
具体的,调用系统方法,传递ffmpeg sdk相关的dll参数文件名称,获取模块指针,其中ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
[0066]
本发明实施例还提供一种合成声卡和麦克风声音的装置,该合成声卡和麦克风声
processing unit,cpu),该处理器1102还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0083]
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例的合成声卡和麦克风声音的方法。
[0084]
所述存储介质为实体的、非瞬时性的存储介质,例如可以是u盘、移动硬盘、只读存储器(read

only memory,rom)、磁碟或者光盘等各种可以存储程序代码的实体存储介质。
[0085]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0086]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜