2017-01-27 3 views
7

私はSQLデータベースアプリケーションを持っており、音声検索機能を組み込みたいと考えています。私はすでにデータベースを検索する方法を知っていますが、データベースのテーブルから文法をどうやって作ることができるのか分かりません。これまでのところ私のコードです。SQLデータベースの音声認識VB.net

Dim WithEvents reco As New Recognition.SpeechRecognitionEngine 


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    reco.SetInputToDefaultAudioDevice() 

    Dim gram As New Recognition.SrgsGrammar.SrgsDocument 

    Dim RecipeRule As New Recognition.SrgsGrammar.SrgsRule("recipe") 

    Dim colorsList As New Recognition.SrgsGrammar.SrgsOneOf(DataSet1.Table.ToString) 

    RecipeRule.Add(colorsList) 

    gram.Rules.Add(RecipeRule) 

    gram.Root = RecipeRule 

    reco.LoadGrammar(New Recognition.Grammar(gram)) 

    reco.RecognizeAsync() 

End Sub 

Private Sub reco_RecognizeCompleted(ByVal sender As Object, ByVal e As System.Speech.Recognition.RecognizeCompletedEventArgs) Handles reco.RecognizeCompleted 

    reco.RecognizeAsync() 

End Sub 

Private Sub reco_SpeechRecognized(ByVal sender As Object, ByVal e As System.Speech.Recognition.RecognitionEventArgs) Handles reco.SpeechRecognized 
    Try 
     Me.TableTableAdapter.Recipe(Me.DataSet1.Table, e.Result.Text & "%") 
    Catch ex As System.Exception 
     System.Windows.Forms.MessageBox.Show(ex.Message) 
    End Try 
End Sub 

私はDataSet1.Table文法でレシピ行のアイテムを作成する必要があります。

答えて

1

SrgsOneOfは、パラメータとしてstring[]を取るコンストラクタがあります。https://msdn.microsoft.com/en-us/library/ms554280(v=vs.110).aspx

あなたの現在のコードは、仕事に行くされていない文字列にテーブルを変換しようとします。代わりに、テーブルを反復して文字列の配列を作成することができます。

ポストからは、テーブルに行として個別の語句が含まれているかどうかは不明ですが、語句のリストを含むシングルトンの行もあります。各行を想定し

は、単語やフレーズを持ってい

例:

DataTable 
--------- 
red 
green 
blue 
indigo 

あり(LINQを使用して、ArrayListの作成)これを行うには複数の方法がありますが、ここでは非常に基本的な方法です:

Dim rowCount As Integer = DataSet1.Table.Rows.Count 
Dim arrWords(rowCount) As String 
For i = 0 to rowCount - 1 
    arrWords(i)=DataSet1.Table.Rows(i)(0).ToString(); 
Next 

Dim colorsList As New Recognition.SrgsGrammar.SrgsOneOf(arrWords) 

すべての単語/フレーズを含む1つの行があるとします。

この場合、カンマ区切りであると仮定します。

例:この場合

DataTable 
--------- 
red,green,blue,indigo 

、単にアレイを作成するために、スプリットを使用します。

Dim strWords as String = DataSet1.Table.Rows(i)(0).ToString() 
Dim arrwords As String() = strWords.Split(New Char() {","c}) 

Dim colorsList As New Recognition.SrgsGrammar.SrgsOneOf(arrWords)