Конвертировать звук в текст
-
08-10-2019 - |
Вопрос
Я просто хочу знать, есть ли какие-либо сборки в библиотеках или внешних библиотеках в Java или C #, которые позволяют мне взять аудиофайл и разбирать его и извлекать текст от него.
Мне нужно сделать приложение, чтобы сделать это, но я не знаю, откуда я могу начать.
Решение
Вот некоторые из ваших вариантов:
Другие советы
Вот полный пример, используя C # и System.speech
Код может быть разделен на 2 основных запчасти:
Настройка объекта CompleteReCongionIngionEngineEngineDine (и его необходимых элементов), обрабатывающих репределившиеся события.
Шаг 1: Настройка CompleteReCognitionEngine
_speechRecognitionEngine = new SpeechRecognitionEngine();
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
_dictationGrammar = new DictationGrammar();
_speechRecognitionEngine.LoadGrammar(_dictationGrammar);
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
В этот момент ваш объект готов начать транскрибировать звук с микрофона. Вы должны обрабатывать некоторые события, хотя, чтобы на самом деле получить доступ к результатам.
Шаг 2: Обработка событий ComputrecognationendEngine
_SPEECHRECOGNINGINGENGINE.SPECHERECOGNIZES - = новый eventhandler (peoplerecognized); _SPEECHRECOGNINGINGENGINE.SPECHHYPOTHESESIZESIZES - = новый EventHandler (Shaphypothescateising);
_speechrecognitionentengine.speechrecognized + = новый eventhandler (prectrecognized); _speechrecognitionentengine.speechhypothensized + = новый EventHandler (Shaphypothescateising);
Частная пустота SpeakyHypothesising (отправитель объекта, SpeathyhypothesizedEventargs e) {//// Результаты реального времени из строки двигателя Realtimeresults = e.result.Text; }
Частная пустота Прозрачностиректизирована (отправитель объекта, CompletionReCognizedEventargs e) {/// окончательный ответ от строки двигателя FinalANSWER = E.RESULT.TEXT; }
Вот и все. Если вы хотите использовать предварительно записанный файл .wav вместо микрофона, вы бы использовали
_speechrecognitionationEngine.tetinputtowavefile (pathtotargetwavfile);
вместо
_speeCherecognitionentengine.etiTinputtodefaultaudevice ();
В этих классах есть куча различных вариантов, и они стоит изучить более подробно.
Вы можете проверить Microsoft речь API.. Отказ Я думаю, что они предоставляют SDK, который вы можете использовать для вашей цели.
Для Java, похоже, есть решение от солнца: javax.speech.recognition
Вы можете использовать SOX (швейцарский армический нож программы обработки звуковых технологий) для конвертации аудиофайла в текстовый файл с числовыми значениями, соответствующими частотой / громкости звука.
Я сделал это для предыдущего проекта, но не знаю точные варианты команд.
Вот ссылка на проект: http://sox.sourceforge.net/main/homepage.