kaa*_*y03 7 sql database vb.net speech-recognition speech
我有一个SQL数据库应用程序,我想要合并语音搜索功能.我已经知道如何搜索数据库,但我不知道如何从数据库中的表格中创建语法.到目前为止,这是我的代码.
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
Run Code Online (Sandbox Code Playgroud)
我需要在DataSet1中的配方行中创建项目.Table the grammar.
SrgsOneOf有一个接受 astring[]作为参数的构造函数:https://msdn.microsoft.com/en-us/library/ms554280 (v=vs.110).aspx
您当前的代码尝试将表转换为字符串,但这是行不通的。相反,您可以通过迭代表来创建字符串数组。
从帖子中不清楚该表是否包含单个单词/短语作为行,或者包含单词/短语列表的单行。
假设每一行都有一个单词或短语
例子:
DataTable
---------
red
green
blue
indigo
Run Code Online (Sandbox Code Playgroud)
有多种方法可以做到这一点(创建 ArrayList、使用 LINQ),但这里有一个非常基本的方法:
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)
Run Code Online (Sandbox Code Playgroud)
假设有一行包含所有单词/短语
在这种情况下,我将假设它们是用逗号分隔的。
例子:
DataTable
---------
red,green,blue,indigo
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只需使用 Split 创建一个数组:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |