Проблемы с использованием StringBuilder для распознавания речи. Несмотря на использование нескольких режимов распознавания, распознается только одно слово

#speech-recognition

#распознавание речи

Вопрос:

Мне было скучно пытаться создать еще одно средство онлайн-поиска на YouTube с некоторым успехом. Я решил использовать StringBuilder для добавления своей речи, но, несмотря на использование режима распознавания.Несколько он обнаружит только одно слово. В основном он мгновенно записывает мою речь и записывает в файл, что хорошо, потому что вам никогда не нужно создавать список команд. Сразу после этого запускается веб-поиск (все происходит за долю секунды). Он автоматически обновляется с каждым произнесенным словом, заменяя последнее произнесенное слово. Я попробовал несколько других тактик, но безрезультатно. Я понимаю, что у Google и Youtube есть поисковые системы, но я не вижу смысла использовать их, если вы заинтересованы в том, чтобы быть творческим программистом. Это как бы противоречит цели быть программистом. Я хотел мыслить нестандартно, и я ищу кого-то, кто мог бы решить эту проблему непредвзято. Я хочу избежать использования Sapi и диктовки для записи. Я действительно хочу, чтобы это сработало, и ценю всю помощь, которую можно оказать. Я подумал, может быть, сб.toString()) в конце пути к файлу может потребоваться какая-то корректировка? Он будет легко выполнять поиск по одному слову. Это весь код за вычетом импорта, который там есть:

 Private ReadOnly Drone As New SpeechRecognitionEngine  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load   If Not Directory.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}WM") Then  Directory.CreateDirectory($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}WM")  End If  'My.Computer.FileSystem.CreateDirectory($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}WM")   Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")   Drone.LoadGrammarAsync(New Grammar(New GrammarBuilder(New Choices(File.ReadAllLines("C:Usersjustin.rosssourcereposSearch UltimaSearch UltimaArchiveData.txt")))))  Drone.RequestRecognizerUpdate()  Drone.SetInputToDefaultAudioDevice()  AddHandler Drone.SpeechRecognized, AddressOf Recognizer_SpeechRecognized  Drone.RecognizeAsync(RecognizeMode.Multiple)  End Sub  Private Sub Recognizer_SpeechRecognized(sender As Object, e As SpeechRecognizedEventArgs)  Dim speech As String = e.Result.Text.ToString   Select Case (speech)  Case speech   If speech lt;gt; " " Then  'This section will take spoken word, write to file then execute search.  Dim sb As New StringBuilder  sb.AppendLine(speech)  File.WriteAllText("C:Usersjustin.rosssourcereposSearch UltimaSearch UltimaFile.txt", sb.ToString())   speech = "https://www.youtube.com/search?q=" amp; Uri.EscapeUriString(speech)  Dim proc As New Process()  Dim startInfo As New ProcessStartInfo(speech)  proc.StartInfo = startInfo  proc.Start()   Return  End If  End Select End Sub  Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing  'Create Event End Sub  'Disable Engine Private Sub Disable_Click(sender As Object, e As EventArgs) Handles Disable.Click  Drone.RecognizeAsyncStop()  Dim frm As New ScarlettUltima  frm.Show()  Hide() End Sub  Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click  My.Computer.Audio.Play(My.Resources.informative, AudioPlayMode.Background) End Sub  

Конечный класс

Комментарии:

1. Примечание: Я попробовал гипотезу речи, и она поймала каждое слово, но открыла отдельные окна веб-поиска для каждого слова, вместо того, чтобы создавать одну фразу для поиска.

2. Если я использую DictationGrammar, он работает с этими двумя настройками: Частный контроль качества только для чтения В качестве нового DictationGrammar и дрона. LoadGrammarAsync(Qa) и строковые сборки с приложением к файлу. Напишите весь текстовый путь в одном стихе, как проблема, с которой я столкнулся без него. Если бы это можно было решить без использования программы диктовки, было бы довольно круто, если бы вы приняли вызов.