仅当音频高于特定声级时如何录制音频?

Posted

技术标签:

【中文标题】仅当音频高于特定声级时如何录制音频?【英文标题】:How to record audio only if it is above certain sound level? 【发布时间】:2012-07-11 18:28:59 【问题描述】:

我试图做一个语音捕捉应用程序,只在有噪音时捕捉。 所以我使用了 Media Recorder 类的 getMaxAmplitude() 方法。 这是我的想法和工作: 我启动了一个服务,它使用 MediaRecorder 对象记录来自模拟器麦克风的声音,然后我运行一个线程来检查该对象的 getMaxAmplitude() 值,如果它超过特定级别,我使用 MediaRecorder 中的新对象开始另一个录制一段时间,然后保存它。例如,如果在启动我的应用服务后出现“3 个噪音”,它应该保存 4 个音频文件,包括用于监控幅度级别的主要文件。

但我注意到一个问题,即 android 的麦克风一次只允许 1 个媒体记录器。 那么有没有其他方法可以做到这一点?

【问题讨论】:

你能杀掉第一个录音然后开始新的录音吗?只是一个想法...... 这样做会导致我的应用只记录一次。想象一下,如果您需要记录一系列噪音,杀死主要噪音将在记录第一个噪音后停止监控服务 我很确定不能那样做,正如你所说,一次只有一个组件可以访问某些硬件。您可能必须制作自己的记录器,它会不断记录和检查,然后直接从正在记录的内容中手动保存高于阈值的数据。 也许您可以存储音量超过该级别的时间并解析出您想要的音频部分?还是仅根据您的音量变化事件数组播放其中的一部分?希望这会有所帮助! 您很快就会发现“特定声级”是一种非常糟糕的触发录音方式。但这是一个需要及时吸取的教训。 【参考方案1】:

您可能会记下噪音开始和结束的时间戳,然后稍后从音频文件中提取所需的部分。

当然,这可能不完全符合您想要做的事情......目前很难说。

【讨论】:

以上是关于仅当音频高于特定声级时如何录制音频?的主要内容,如果未能解决你的问题,请参考以下文章

如何录制音频,以便在达到特定长度后覆盖录音的开头? [关闭]

以高于 16kHz 的采样率从 AirPod Pro 录制音频

如何快速录制带有特定阈值过滤器的音频

如何录制特定应用程序的音频? vb.net

在 Android 中录制音频时捕获时间戳

录制音频时如何将音频录制设置更改为 16Khz 和 16 位?