使用Java /带通滤波器作为解决方案录制音频时的背景噪音?

时间:2016-01-29 20:57:43

标签: java audio noise

所以,最后几天我一直在使用Google语音API来执行简单的语音识别任务。我有一个上传脚本 - 完美地工作 - 上传.wav文件并收回所说的话。我也有一个很好的麦克风。问题是:

从系统设置或Audacity收听我的麦克风输入时,背景中没有噪音。但是一旦我使用Java记录,我的样本就会变得不准确并且谷歌服务器无法解析。我已经尝试平滑音频,结果取得了成功,但是当辅音喜欢" T"时,服务器无法处理声音。或" K"不见了。

所以,现在我想做一个带通滤波器,滤除我想要的频谱(语音频谱从大约100Hz到600Hz)。问题是,我不知道从哪里开始。我想将过滤器添加到以下方法中:



        static int spikesensitivity = 50;
	    static int sens = 7;
	    static byte smoothedValue = 0;
	    static int smoothing = 2;
	    public static byte[] removeNoise(byte[] b, TargetDataLine line ){ 
	            
	            byte[] returnThis = new byte[b.length];

	            for( int i = 0; i < b.length; i++){
	            	smoothedValue += (b[i] - smoothedValue) / smoothing;
	            	returnThis[i] = smoothedValue;
	            }
                                             
	            return returnThis;
	    }
&#13;
&#13;
&#13;

TargetDataLines数据速率为:16000Hz,8位,单声道,PCM,1声道(每帧1个字节)。

以防有人遇到过类似的事情:为什么用Java录制的录音如此糟糕?我所有的其他程序(非Java)似乎比使用Java获得更好的语音输入。无论我选择什么频率或设置,噪音总是存在 - 但只要我在任何其他程序中尝试相同的设置,噪音就会消失:/

提前感谢您阅读/回复此时间:)

行开片段:http://pastebin.com/qtEyNmCe

0 个答案:

没有答案