Я столкнулся с этой ошибкой при создании приложения, которое может записывать голос и конвертировать речь в текст одновременно. Я использовал Google API для части распознавания речи и объекта audioRecorder для целей записи. Это не сработало, и поэтому я перешел к использованию onBufferReceived() для извлечения байтов (пока пользователь говорит) в этом процессе. Код API Google теперь находится в onResults() части моего кода, который распознает голос без пользовательского интерфейса.распознавание голоса и запись
Вот код
class listener implements RecognitionListener
{
public void onBufferReceived(byte[] buffer)
{
bufferBytes = buffer;
// capturing the buffer into bufferBytes static variable as the user speaks
try {
bos = new BufferedOutputStream(fos);
bos.write(buffer);
} catch (Exception e) {
e.printStackTrace();
}
finally{
if(bos != null){
try{
bos.flush();
bos.close();
}catch(Exception e){}
}
}
}
public void onEndOfSpeech()
{
speakButton.setText(getString(R.string.Speak));
Log.d(TAG, "onEndofSpeech");
}
public void onError(int error)
{
Log.d(TAG, "error " + error);
mSendText.setVisibility(View.VISIBLE);
mSendText.setText("error retriving text, please once check your Data Connection ");
}
public void onResults(Bundle results)
{
String str = new String();
Log.d(TAG, "onResults " + results);
ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (int i = 0; i < data.size(); i++)
{
Log.d(TAG, "result " + data.get(i));
str += data.get(i);
}
mSendText.setVisibility(View.VISIBLE);
mSendText.setText(data.get(0)+"");
}
}