Речь к тексту из собственного звукового файла - PullRequest
12 голосов
/ 09 августа 2011

Как вы, наверное, знаете, реализовать преобразование речи в текст довольно просто с помощью API Android. Все, что вам нужно сделать, это просто вызвать намерение API, и оно вернет вам текст. Мой случай немного отличается, у меня есть предварительно записанный звуковой файл 3GPP, который я записал от пользователя и сохранил на SD-карте. Я хочу знать, возможно ли переписать это в текст, как любое другое распознавание речи. Позволяет ли API преобразования речи в текст загружать ваши собственные звуковые файлы для обработки? Или это невозможно?

Ответы [ 3 ]

3 голосов
/ 27 сентября 2011

API не позволяет этого, но см. этот пост в блоге и его комментарии для возможного обходного пути.Также убедитесь, что ваш файл содержит высококачественный звук (не менее 16 бит и 16 кГц) для лучшей транскрипции.

См. Также:

2 голосов
/ 18 апреля 2014

У меня есть решение, которое хорошо работает для преобразования речи в текст из звукового файла.Вот ссылка на простой проект Android, который я создал, чтобы показать, как работает решение.Кроме того, я вставил несколько экранов печати в проект, чтобы проиллюстрировать приложение.

Я попытаюсь кратко объяснить подход, который я использовал.В этом проекте я объединил две функции: Google Speech API и запись Flac.

Google Speech API вызывается через HTTP-соединения. Майк Пульц дает более подробную информацию об API:

"(...) новый [Google] API - это API-интерфейс с полнодуплексной потоковой передачей. Это означает, что он фактически используетдва HTTP-соединения - один POST-запрос для загрузки контента в виде «живого» фрагментированного потока и второй GET-запрос для доступа к результатам, что гораздо более целесообразно для более длинных аудиосэмплов или для потокового аудио. "

Однако этот API должен получать звуковой файл FLAC для правильной работы.Это заставляет нас перейти ко второй части: Запись Flac

Я реализовал запись Flac в этом проекте путем извлечения и адаптации некоторых фрагментов кода и библиотек из приложения с открытым исходным кодом под названием AudioBoo.AudioBoo использует собственный код для записи и воспроизведения формата flac.

Таким образом, можно записать звук flac, отправить его в Google Speech API, получить текст и воспроизвести только что записанный звук.

Проект, который я создал, имеет базовые принципы для его работы и может быть улучшен для конкретных ситуаций.Чтобы заставить его работать в другом сценарии, необходимо получить ключ Google Speech API, который получается, будучи частью группы Google Chromium-dev.Я оставил один ключ в этом проекте, чтобы показать, что он работает, но в конце концов я его удалю.Если кому-то нужна дополнительная информация об этом, дайте мне знать, потому что я не могу разместить более двух ссылок в этом сообщении.

0 голосов
/ 19 марта 2017

В настоящее время невозможно отправить собственный аудиофайл в Google для обработки, но вместо этого вы можете использовать свой динамик и микрофон на устройстве Android, чтобы использовать свой аудиофайл в качестве входных данных для распознавания голоса Google.

Сначала у вас должен быть аудиофайл, который может находиться на вашей SD-карте, затем выполните следующие действия:

1) создайте метод по любому желаемому имени

2) в рамках этого метода сначала напишите код для использования распознавания речи Google

3) Следуя этому коду, напишите код для использования динамика для воспроизведения вашего аудиофайла, который затем станет входом для распознавания речи Google

 //code for google voice recognition
 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
 intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
                        getString(R.string.speech_prompt));
 try {
      startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
 } catch (ActivityNotFoundException a) {
 Toast.makeText(getApplicationContext(),
                            getString(R.string.speech_not_supported),
                            Toast.LENGTH_SHORT).show();

//code for playing the audio file which you wish to give as an input
    MediaPlayer mp = new MediaPlayer();
    try {
     mp.setDataSource(file); // here file is the location of the audio file you wish to use an input
        mp.prepare();
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }

Для справки смотрите мой блог https://sureshkumarask.wordpress.com/2017/03/19/how-to-give-our-own-audio-file-as-an-input-to-any-speech-recognizer/

Я вложил ссылку на Java-файл в свой блог.

...