#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) и строковые сборки с приложением к файлу. Напишите весь текстовый путь в одном стихе, как проблема, с которой я столкнулся без него. Если бы это можно было решить без использования программы диктовки, было бы довольно круто, если бы вы приняли вызов.