Как лучше всего транскрибировать речь в текст в веб-приложении asp.net? - PullRequest
3 голосов
/ 19 января 2011

Я создаю веб-приложение для записи голосовых сообщений и ищу наилучшие варианты для преобразования голосовых сообщений в текст.У кого-нибудь есть какие-нибудь предложения о том, что использовать для конвертации?Будет ли System.Speech работать?

1 Ответ

6 голосов
/ 19 января 2011

System.Speech - это ориентированный на клиента API. Vista и Windows 7 включают речевые движки для System.Speech. Вы можете использовать это для транскрипции, потому что клиентские речевые движки, предоставляемые Microsoft, включают грамматику диктовки.

Серверные речевые движки, предоставляемые Microsoft, не содержат грамматику диктовки, поэтому их труднее использовать для транскрипции. Пространством имен .NET для распознавания серверов является Microsoft.Speech, а полный SDK для версии 10.2 доступен по адресу http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4.. Речевой движок можно загрузить бесплатно.

Чтобы начать работу с речью .NET, есть очень хорошая статья, опубликованная несколько лет назад на http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. Это, пожалуй, лучшая вступительная статья, которую я когда-либо нашел. Это немного устарело, но очень полезно. (Метод AppendResultKeyValue был удален после бета-тестирования.)

Вот краткий пример, демонстрирующий одно из самых простых приложений Windows. Для форм форм, использующее грамматику диктовки, о которой я только мог подумать. Это должно работать на Windows Vista или Windows 7. Я создал форму. Уронил на нее кнопку и сделал кнопку большой. Добавлена ​​ссылка на System.Speech и строка:

using System.Speech.Recognition;

Затем я добавил следующий обработчик событий для button1:

private void button1_Click(object sender, EventArgs e)
{         
    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
    Grammar dictationGrammar = new DictationGrammar();
    recognizer.LoadGrammar(dictationGrammar);
    try
    {
        button1.Text = "Speak Now";
        recognizer.SetInputToDefaultAudioDevice();
        RecognitionResult result = recognizer.Recognize();
        button1.Text = result.Text;
    }
    catch (InvalidOperationException exception)
    {
        button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
    }
    finally
    {
        recognizer.UnloadAllGrammars();
    }                          
}

Немного больше информации, сравнивающей различные варианты речевых движков и API, поставляемых Microsoft, можно найти по адресу В чем разница между System.Speech.Recognition и Microsoft.Speech.Recognition?

...