.NET Speech 名前空間クラスを使用して、WAVファイルのオーディオをテキスト形式に変換し、画面に表示したり、ファイルに保存したりするにはどうすればよいですか?
チュートリアルのサンプルを探しています。
アップデート
ここでコードサンプルを見つけました。しかし、試してみると、間違った結果が得られます。以下は、私が採用した VB コードのサンプルです。(実際には、vb/c# のいずれかである限り、言語は気にしません...)。それは私に適切な結果を与えていません。正しい文法、つまり録音で期待される単語を入力すれば、そのテキスト出力が得られるはずです。最初に、呼び出しにあるサンプル単語を試しました。時々、その (1) 単語だけを出力し、他には何も出力しませんでした。それから、録音ではまったく予期しない言葉を試してみました...残念ながら、それも印刷されました... :(
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
UPDATE(11月28日以降)
デフォルトの文法をロードする方法を見つけました。次のようになります。
sre.LoadGrammar(New DictationGrammar)
ここにはまだ問題があります。認識は正確ではありません。出力はゴミです。6 分のファイルの場合、おそらく音声ファイルとはまったく関係のない 5 ~ 6 語のテキストが生成されます。