通过麦克风将PCM数据与先前输入的数据匹配或用作单词识别

时间:2012-03-06 15:52:34

标签: android speech-recognition

我正在开发一个用于识别pcm数据语音的应用程序。目前我正在打印pcm缓冲区。

int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);

recorder = new AudioRecord(AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10);

track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, 
                    AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT,     N*10, AudioTrack.MODE_STREAM);

            recorder.startRecording();

            /*
             * Loops until something outside of this thread stops it.
             * Reads the data from the recorder and writes it to the audio track f
             */
            while(!stopped)
            { 
                //Log.i("Map", "Writing new data to buffer");
                short[] buffer = buffers[ix++ % buffers.length];
                N = recorder.read(buffer,0,buffer.length);
                for(int i = 0; i < buffer.length; i ++) {
                    System.out.println(String.valueOf(buffer[i]));
                }
            }

我想要1)将pcm数据与先前的pcm数据匹配,或者2)将其识别为单词。例如。如果我在麦克风里面说“你好”,它会将pcm数据变成单词hello,我可以按照单词处理,或者如果我在两个单独的缓冲区中记录'hello'和'world',然后说'hello'再次,它可以确定我重复'你好'而不是世界。请帮忙。

1 个答案:

答案 0 :(得分:0)

Android已内置语音识别功能。但是,我不认为它支持录制的PCM数据。我相信,要使用它,你必须直接输入语音。请参阅http://android-developers.blogspot.com/2010/03/speech-input-api-for-android.html开始使用。

如果您必须拥有录制的数据,则可以使用其他服务进行语音识别。有关某些选项的介绍,请参阅https://stackoverflow.com/a/6351055/90236

如果您只是在玩(而不是制作制作应用),您还可以尝试使用Google服务进行Chrome使用的语音识别。您必须从PCM转换为FLAC。见Google's voice search speech recognition service

如果您想在不进行识别的情况下比较PCM缓冲区,信号处理是一个深刻且有趣的领域。对不起,我太生疏了,不能在那个领域给出任何建议。