关注

如何实时回放麦克风输入的声音?

问题

  • 我想在我的游戏中使用设备的麦克风
  • 不能实时回放麦克风输入的声音,有延迟存在 

原因

您不能实时回放麦克风采集的声音,您可能遇到了以下问题:

  • 回放时能听到一些不容易察觉的杂音
  • 采集到的声音有无限循环的反馈噪声
  • 回放时听到的声音有很大的延迟

解决方案

为确保实时播放麦克风采集的声音:

首先,您需要将麦克风设置为AudioClip并附加到音源Audio Source上,同时在Audio Source上设置音频模式为循环:勾选Inspector中Audio Source组件的loop tick单选框。此时您就可以从Audio Source获得音频数据了,而不是从Audio Listener

其次,您需要为Audio Source附加另外的脚本,用于告知Unity这个麦克风将要开始记录AudioClip,为此您需要调用Microphone.Start()函数。

如需控制延迟,您需要调用Microphone.GetPosition()函数,然后设置需要的延迟采样率。如要无延迟播放,可将其设为0,在播放音频之前就开始采样。参考下面的脚本:

注意,移动平台和Web平台需要申请麦克风权限,如果您在脚本中引用了 UnityEngine.Microphone,则Unity会自动为其添加该权限。

但Android平台对此要求并不是特别严格,因为这会在Android TV平台上产生兼容问题。

更多信息

更多关于Microphone.Start()的信息,请参考该文档

更多关于Microphone.GetPosition()的信息,请参考该文档

 

 

这篇文章有帮助吗?
1 人中有 1 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。