Вопрос по android – Android: запись голоса и сохранение звука

9

Я работаю над приложением, которое запишет голос пользователя и сохранит файл на 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){




}
Вы хотите записать голос или использовать распознавание API? K_Anas
это совершенно другая особенность K_Anas
это невозможное намерение распознавателя предназначено для распознавания текста в речь K_Anas
Я хочу записать голос. Это невозможно с помощью RecognizerIntent? AndroidDev93
Не задавайте повторяющихся вопросов! Вы спросили в основном то же самое вчера на:stackoverflow.com/questions/10900697/… Chris Stratton

Ваш Ответ

2   ответа
8

Существует пример того, как сделать захват звука с помощью MediaRecorder вДокументация для разработчиков Android.

Я бы порекомендовал сохранить файлы на SD-карте, а затем попросить код галереи проверить SD-карту, чтобы увидеть, какие файлы отображать. Вы можете получить каталог SD-карты, используяEnvironment.getExternalStorageDirectory () метод. Было бы лучше сохранить ваши файлы в подкаталоге корневого каталога SD-карты.

Убедитесь, что вы даете своим заявкамправа доступа это понадобится. По крайней мере, это понадобитсяЗАПИСЬ АУДИО а такжеWRITE_EXTERNAL_STORAGE.

Также вы должны увидеть эти уроки:

http://www.androiddevblog.net/android/android-audio-recording-part-1

http://www.androiddevblog.net/android/android-audio-recording-part-2

Возможно ли это сделать с помощью RecognizerIntent? Я хотел бы использовать это, потому что он имеет лучший интерфейс и выглядит намного лучше AndroidDev93
Распознавание не используется для распознавания речи! Вы говорите, телефон распознает вашу речь как последовательность символов, а затем получает данные для вас, которые соответствуют тому, что вы сказали.
Последние две ссылки больше не работают .. :(
MediaRecorder  кажется, здесь не работает, так как он генерирует ошибки в распознавании речи при использовании.
2

если тыreally хотите записать аудио через API распознавания речи, то вы можете использоватьRecognitionService.Callback у которого есть метод

void bufferReceived(byte[] buffer)

Это дает вам доступ к записанному аудиобуферу во время записи и распознавания речи. (Информация о частоте дискретизации не предоставляется.) Затем вы можете сохранить полученные буферы в файл для последующего воспроизведения. Я думаю, что клавиатурные приложения используют этот вызов для отображения формы волны записанной речи. Вы должны реализовать пользовательский интерфейс самостоятельно.

ГолыеRecognizerIntent.ACTION_RECOGNIZE_SPEECH просто возвращает набор слов / фраз без звука.

Также этот метод вызывается не каждым устройством, вы не можете зависеть от него. На тех устройствах, которые вызывают это, частота дискретизации данных обычно равна 8 кГц.
@toadzky Исправлено, спасибо
docs в методе bufferReceived укажите порядок байтов, но скажите, что частота дискретизации зависит от реализации.

Похожие вопросы