记录由输入量决定的时间[重复]

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 计算。

以上是关于记录由输入量决定的时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在用户输入上显示记录存储过程 [重复]

从 Advantage Database Server 10.1 表中删除重复行

预输入搜索中出现重复记录

记录一次由事务可重复读引起的问题

用于数据输入的表单集尝试创建重复记录导致错误

非主要 Grails 的重复条目问题