Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过麦克风将PCM数据与先前输入的数据相匹配,或用作文字识别_Android_Speech Recognition - Fatal编程技术网

Android 通过麦克风将PCM数据与先前输入的数据相匹配,或用作文字识别

Android 通过麦克风将PCM数据与先前输入的数据相匹配,或用作文字识别,android,speech-recognition,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_16BI

我正在开发一个从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]));
                }
            }
int N=AudioRecord.getMinBufferSize(8000,单声道中的AudioFormat.CHANNEL\u,AudioFormat.ENCODING\u PCM\u 16位);
记录器=新的音频记录(AudioSource.MIC,8000,AudioFormat.CHANNEL,单声道,AudioFormat.ENCODING,PCM,16位,N*10);
曲目=新的音频曲目(AudioManager.STREAM_MUSIC,8000,
AudioFormat.CHANNEL\u OUT\u MONO、AudioFormat.ENCODING\u PCM\u 16位、N*10、AudioTrack.MODE\u STREAM);
记录器。开始记录();
/*
*循环,直到线程外的某个对象停止它。
*从录音机读取数据并将其写入音频曲目f
*/
当(!停止)
{ 
//Log.i(“映射”,“将新数据写入缓冲区”);
short[]buffer=buffers[ix++%buffers.length];
N=记录器读取(缓冲区,0,缓冲区长度);
for(int i=0;i

我希望1)将pcm数据与以前的pcm数据匹配,或2)将其识别为字。例如如果我在麦克风内说“hello”,它会将pcm数据转换为hello一词,我可以根据该词进行处理,或者如果我在两个单独的缓冲区中记录“hello”和“world”,然后再次说“hello”,它可以确定我重复了“hello”而不是world。请帮忙

Android内置了语音识别功能。但是,我认为它不支持记录的PCM数据。我认为,要使用它,您必须直接进行语音输入。请确保开始

如果您必须记录数据,您可以使用其他服务进行语音识别。有关部分选项的介绍,请参阅

如果你只是在玩游戏(而不是开发生产应用程序),你也可以尝试使用Chrome使用的谷歌语音识别服务。您必须将PCM转换为FLAC。看

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