Подтвердить что ты не робот

Речь в текст из собственного звукового файла

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

4b9b3361

Ответ 1

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

См. также:

Ответ 2

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

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

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

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

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

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

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

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

Ответ 3

В настоящее время невозможно отправить собственный аудиофайл в 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 файла в своем блоге.