记录由输入量决定的时间[重复]
Posted
技术标签:
【中文标题】记录由输入量决定的时间[重复]【英文标题】:Recording for time determined by volume of input [duplicate] 【发布时间】:2016-04-30 20:13:34 【问题描述】:如何编写一个java程序,当麦克风捕获的声音足够响时开始录制声音,当声音不大时停止。
也就是说,录制没有时间限制 - 当波结束时,程序停止录制
【问题讨论】:
【参考方案1】:虽然我对 Java Sound API 并不太熟悉,但在 Google 上快速搜索 Java Sound API 提供了很多信息和代码 sn-ps。
你可以使用 this 之类的东西
为了根据音量级别开始或停止录制,您可以调用 DataLine 对象上的 getLevel() 方法作为 line.Start() 和 line.stop() 方法之前的条件来检查当前音量你的麦克风。
即
if(line.getLevel() < 0.3)
line.stop();
description of getLevel() method from javadocs 获取线路的当前音量级别。此电平是信号当前幅度的量度,范围从 0.0(静音)到 1.0(声音波形的最大可能幅度)。这些单位测量的是线性幅度,而不是分贝。
【讨论】:
"为了根据音量级别开始或停止录音,您可以调用 DataLine 对象的 getLevel() 方法" 这样做没有任何好处。这是线路设置的“音量级别”并且不会更改(除非最终用户或应用程序更改它)。要获得实际声音的电平,需要对数据执行 RMS 或 dB 计算。以上是关于记录由输入量决定的时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章