Конвертировать аудио файл в текст, используя System.Speech - PullRequest
3 голосов
/ 10 мая 2011

Я хочу преобразовать файл .wav, записанный через телефон Android на 16000, в текст с использованием C #;а именно пространство имен System.Speech.Мой код упомянут ниже:

recognizer.SetInputToWaveFile(Server.MapPath("~/spoken.wav"));
recognizer.LoadGrammar(new DictationGrammar());
RecognitionResult result = recognizer.Recognize();
label1.Text = result.Text;

Отлично работает с примером файла .wav "Hello world".Однако, когда я записываю что-то на телефон и пытаюсь конвертировать в на ПК, преобразованный текст совсем не похож на то, что я записал.Есть ли какой-нибудь способ убедиться, что аудио файл записан точно?

Ответы [ 3 ]

3 голосов
/ 10 мая 2011

В каком формате записан аудиофайл телефона?Файл закодирован?Microsoft распознаватель поддерживает PCM, ALaw и ULaw.Убедитесь, что вы записываете в поддерживаемом формате.Вы можете просмотреть свойство RecognizerInfo.SupportedAudioFormats - http://msdn.microsoft.com/en-us/library/system.speech.recognition.recognizerinfo.supportedaudioformats(v=VS.90).aspx и проверить форматы, поддерживаемые версией вашего распознавателя.

Слушали ли вы файл, записанный на вашем телефоне?Это шумно?Это звучит ясно?Убедитесь, что вы подаете на распознаватель наилучшее звучание, какое только можете.

Поскольку вы используете грамматику диктовки, я предполагаю, что вы используете Windows 7. Пробовали ли вы обучить распознаватель?Насколько я понимаю, производительность грамматики диктовки может быть улучшена путем обучения и что стандартная подготовка по распознаванию речи в Windows 7 поможет повысить ее производительность - http://windows.microsoft.com/en-US/windows7/Set-up-Speech-Recognition

Некоторые другие вопросы по StackOverflow также могут дать вам некоторые сведения.См. хороший API распознавания речи для запуска.

0 голосов
/ 24 марта 2012

Полная информация о реализации именно того, что вы хотите, может быть найдена здесь:

Преобразование звука WAV в текст с использованием System.Speech

0 голосов
/ 03 января 2012
Imports System
Imports System.Speech.Recognition

Public Class Form1

    Dim WithEvents sre As SpeechRecognitionEngine

    Private Sub btnLiterate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLiterate.Click
        If TextBox1.Text.Trim.Length = 0 Then Exit Sub
        sre.SetInputToWaveFile(TextBox1.Text)
        Dim r As RecognitionResult
        r = sre.Recognize()
        If r Is Nothing Then
            TextBox2.Text = "Could not fetch result"
            Return
        End If
        TextBox2.Text = r.Text
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = String.Empty
        Dim dr As DialogResult
        dr = OpenFileDialog1.ShowDialog()
        If dr = Windows.Forms.DialogResult.OK Then
            If Not OpenFileDialog1.FileName.Contains("wav") Then
                MessageBox.Show("Incorrect file")
            Else
                TextBox1.Text = OpenFileDialog1.FileName
            End If
        End If
    End Sub

    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        sre = New SpeechRecognitionEngine()

    End Sub

    Private Sub sre_LoadGrammarCompleted(ByVal sender As Object, ByVal e As System.Speech.Recognition.LoadGrammarCompletedEventArgs) Handles sre.LoadGrammarCompleted

    End Sub

    Private Sub sre_SpeechHypothesized(ByVal sender As Object, ByVal e As System.Speech.Recognition.SpeechHypothesizedEventArgs) Handles sre.SpeechHypothesized
        System.Diagnostics.Debug.Print(e.Result.Text)
    End Sub

    Private Sub sre_SpeechRecognitionRejected(ByVal sender As Object, ByVal e As System.Speech.Recognition.SpeechRecognitionRejectedEventArgs) Handles sre.SpeechRecognitionRejected
        System.Diagnostics.Debug.Print("Rejected: " & e.Result.Text)
    End Sub

    Private Sub sre_SpeechRecognized(ByVal sender As Object, ByVal e As System.Speech.Recognition.SpeechRecognizedEventArgs) Handles sre.SpeechRecognized
        System.Diagnostics.Debug.Print(e.Result.Text)
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim words As String() = New String() {"triskaidekaphobia"}
        Dim c As New Choices(words)
        Dim grmb As New GrammarBuilder(c)
        Dim grm As Grammar = New Grammar(grmb)
        sre.LoadGrammar(grm)
    End Sub

End Class 

или попробуйте эту ссылку Аудио в текстовое программное обеспечение бесплатно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...