所以,最后几天我一直在使用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;
TargetDataLines数据速率为:16000Hz,8位,单声道,PCM,1声道(每帧1个字节)。
以防有人遇到过类似的事情:为什么用Java录制的录音如此糟糕?我所有的其他程序(非Java)似乎比使用Java获得更好的语音输入。无论我选择什么频率或设置,噪音总是存在 - 但只要我在任何其他程序中尝试相同的设置,噪音就会消失:/
提前感谢您阅读/回复此时间:)