音频单元从麦克风捕获声音,添加混响,然后发送到扬声器

Posted

技术标签:

【中文标题】音频单元从麦克风捕获声音,添加混响,然后发送到扬声器【英文标题】:Audio Unit to capture sound from mic, add reverb ,then send to speaker 【发布时间】:2013-03-06 13:54:29 【问题描述】:

很抱歉再次打扰。

我使用音频图形处理方法播放mic-in并为扬声器的声音添加效果。 当我使用 AUGraph_1 时: RIO_input->Converter-> AUiPodE->RIO_output,它工作正常,我可以听到声音播放。

但是当我使用 AUGraph_2 时:RIO_input->Converter-> AUReverb2->RIO_output,尝试添加一些混响,出问题了,完全没有声音。

这是使用CAShow打印的日志:

AUGraph_1>>> 节点1:'auou''rioc''appl',实例0x816f920 O I

节点 2:'aufc' 'conv' 'appl',实例 0x81713e0 O I

节点 3:'aufx''ipeq''appl',实例 0x8171740 O I

连接:

节点 1 总线 1 => 节点 2 总线 0 [ 2 ch, 0 Hz, 'lpcm' (0x0000000C) 16 位小端有符号整数]

节点 2 总线 0 => 节点 3 总线 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24 位小端有符号整数,去交错]

节点 3 总线 0 => 节点 1 总线 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24 位小端有符号整数,去交错]

AUGraph_2>>>>

节点1:'auou''rioc''appl',实例0x8151420 O

节点 2: 'aufc' 'conv' 'appl',实例 0x7539df0 O

节点 3:'aufx' 'rvb2' 'appl',实例 0x7539210 O

连接:

节点 1 总线 1 => 节点 2 总线 0 [ 2 ch, 0 Hz, 'lpcm' (0x0000000C) 16 位小端有符号整数]

节点 2 总线 0 => 节点 3 总线 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

节点 3 总线 0 => 节点 1 总线 0 [ 2 ch, 0 Hz, 'lpcm' (0x0000000C) 16 位小端有符号整数]

有什么问题吗?

请帮助我,任何线索将不胜感激。

最好的

【问题讨论】:

【参考方案1】:

我做了同样的练习,但使用了混合器单元而不是转换器,如下所示

AudioUnitGraph 0x13D000: 会员节点: 节点1:'auou''rioc''appl',实例0x7ac9100 O 节点 2:'aumx''mcmx''appl',实例 0x7acdee0 O 节点 3:'aufx''rvb2''appl',实例 0x7acf150 O 连接: 节点 1 总线 1 => 节点 2 总线 1 [ 1 ch,44100 Hz,'lpcm' (0x00000C2C) 8.24 位小端符号整数,去交错] 节点 2 总线 0 => 节点 3 总线 0 [ 2 ch,44100 Hz,'lpcm' (0x00000029) 32 位小端浮点,去交错] 节点 3 总线 0 => 节点 1 总线 0 [2 ch, 0 Hz, 'lpcm' (0x0000000C) 16 位小端有符号整数]

我简化了来自 Audiograph http://zerokidz.com/audiograph/Home.html 的代码来执行此操作,因为它有很好的注释并解释了有关各种 ASBD 格式的问题。

【讨论】:

以上是关于音频单元从麦克风捕获声音,添加混响,然后发送到扬声器的主要内容,如果未能解决你的问题,请参考以下文章

捕获音频输出

来自麦克风的声音与来自扬声器的声音

如何防止在同一台电脑上从麦克风到扬声器的回声

仅从 iphone 扬声器(不包括麦克风)录制音频输出

Java Sound API:从目标端口捕获声音输出

OpenAL播放捕获的音频数据c ++