Android: запись голоса и сохранение звука
Я работаю над приложением, которое запишет голос пользователя и сохранит файл на SD-карте, а затем позволит пользователю снова прослушать звук.
Я могу позволить пользователю записывать свой голос с помощью RecognizerIntent, но я не могу понять, как сохранить аудиофайл и позволить пользователю слышать звук. Буду признателен, если кто-нибудь сможет мне помочь. Я показал мой код ниже:
// Setting up the onClickListener for Audio Button
attachVoice = (Button) findViewById(R.id.AttachVoice_questionandanswer);
attachVoice.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
voiceIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Please Speak");
startActivityForResult(voiceIntent, VOICE_REQUEST);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == VOICE_REQUEST && resultCode == RESULT_OK){
}
2 ответа
Пример документации по захвату звука с использованием MediaRecorder приведен в документации разработчика Android.
Я бы порекомендовал сохранить файлы на SD-карте, а затем попросить код галереи проверить SD-карту, чтобы увидеть, какие файлы отображать. Вы можете получить каталог SD-карты с помощью метода Environment.getExternalStorageDirectory(). Было бы лучше сохранить ваши файлы в подкаталоге корневого каталога SD-карты.
Убедитесь, что вы даете своим приложениям необходимые разрешения. По крайней мере, для этого потребуются RECORD_AUDIO и WRITE_EXTERNAL_STORAGE.
Также вы должны увидеть эти уроки:
http://www.androiddevblog.net/android/android-audio-recording-part-1
http://www.androiddevblog.net/android/android-audio-recording-part-2
Если вы действительно хотите записывать звук через API распознавания речи, тогда вы можете использовать RecognitionService.Callback, у которого есть метод
void bufferReceived(byte[] buffer)
Это дает вам доступ к записанному аудиобуферу во время записи и распознавания речи. (Информация о частоте дискретизации не предоставляется.) Затем вы можете сохранить полученные буферы в файл для последующего воспроизведения. Я думаю, что клавиатурные приложения используют этот вызов для отображения формы волны записанной речи. Вы должны реализовать пользовательский интерфейс самостоятельно.
Голые RecognizerIntent.ACTION_RECOGNIZE_SPEECH
просто возвращает набор слов / фраз без звука.