Печатайте точные промежуточные слова в реальном времени из Google Stt ⇐ C#
Печатайте точные промежуточные слова в реальном времени из Google Stt
Как распечатать текст произнесенных слов в реальном времени из Google Stt. Мы можем увидеть это в голосовом поиске Google, если даём команду типа «переполнение стека», он мгновенно печатает слова. У меня есть код ниже -
static async Task Main(string[] args) { строка учетные данныеPath = "C:/Users/Bjit/Downloads/isocial-398406-4b944a65c2f1/isocial-398406-4b944a65c2f1.json"; System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", CredentialPath); строка LanguageCode = "en-US"; вар SpeechClient = SpeechClient.Create(); // Инициализируем входной аудиопоток вар audioStream = новый WaveInEvent (); audioStream.WaveFormat = новый WaveFormat(16000, 16, 1); // При необходимости корректируем формат варstreamingCall = речьКлиент.StreamingRecnigne(); // Начать потоковую передачу с конфигурацией varstreamingConfig = новый StreamingRecognitionConfig { Конфигурация = новая конфигурация распознавания { Кодировка = RecognitionConfig.Types.AudioEncoding.Linear16, СэмплРатеГерц = 16000, Код Языка = Код Языка, EnableAutomaticPunctuation = true, // Включить пунктуацию }, InterimResults = true, // Включить промежуточные результаты }; streamingCall.WriteAsync(новый StreamingRecounceRequest { StreamingConfig = потоковая конфигурация, }); вар interimResultBuilder = новый StringBuilder(); строка LastInterimResult = string.Empty; // Обработка аудиоданных audioStream.DataAvailable += (s, e) => { если (e.Buffer.Length > 0) { streamingCall.WriteAsync(новый StreamingRecounceRequest { AudioContent = Google.Protobuf.ByteString.CopyFrom(e.Buffer, 0, e.BytesRecorded), }); } }; audioStream.StartRecording(); Console.WriteLine("Прослушивание..."); // Запускаем новый поток для прослушивания ответов от сервера вар responseThread = новый поток (async () => { ожидайте foreach (ответ var вstreamingCall.GetResponseStream()) { foreach (результат var в ответе.Результаты) { строковая расшифровка = result.Alternatives[0].Transcript; если (result.IsFinal) { Console.WriteLine(расшифровка); промежуточныйResultBuilder.Очистить(); } иначе, если (IsSignificantChange(расшифровка, LastInterimResult)) { interimResultBuilder.Append(расшифровка); // Разделение промежуточных результатов на полные предложения на основе знаков препинания var interimSentences = interimResultBuilder.ToString().Split(". ", StringSplitOptions.RemoveEmptyEntries); foreach (варное предложение в промежуточных предложениях) { Console.WriteLine("Промежуточный результат: " + предложение + "."); } промежуточныйResultBuilder.Очистить(); } LastInterimResult = стенограмма; } } }); ответПоток.Начать(); Console.WriteLine("Нажмите Enter, чтобы остановить запись..."); Консоль.ReadLine(); // Остановка записи звука и завершение потокового вызова audioStream.StopRecording(); потоковый вызов.WriteCompleteAsync(); ответПоток.Присоединиться(); Console.WriteLine("Нажмите любую клавишу, чтобы выйти..."); Консоль.ReadKey(); } static bool IsSignificantChange (строка currentInterimResult, строка LastInterimResult) { // Настройте эту функцию, чтобы определить, что представляет собой существенное изменение // Здесь мы проверяем, отличается ли текущий результат от последнего результата. return !string.Equals(currentInterimResult, LastInterimResult, StringComparison.OrdinalIgnoreCase); } В качестве вывода речи — здравствуйте, доброе утро, результаты показаны ниже: Промежуточный итог: как. Промежуточный результат: ад. Промежуточный результат: Здравствуйте.. Промежуточный результат: здравствуйте. Промежуточный результат: Здравствуйте. Промежуточный результат: Доброе утро.. Промежуточный результат: Здравствуйте.. Промежуточный результат: Доброе утро.. Промежуточный результат: Здравствуйте. Промежуточный результат: Доброе утро.. Привет. Доброе утро.
Но мой ожидаемый результат печати текста такой же, как при голосовом поиске Google. Когда я говорю «привет», он мгновенно печатает «привет», если я говорю «хорошо», он мгновенно печатает «хорошо», не передавая никаких необычных слов. конечный результат отображается правильно и без каких-либо проблем. Спасибо.
Здесь использовался Google STT, NAudio.
Как распечатать текст произнесенных слов в реальном времени из Google Stt. Мы можем увидеть это в голосовом поиске Google, если даём команду типа «переполнение стека», он мгновенно печатает слова. У меня есть код ниже -
static async Task Main(string[] args) { строка учетные данныеPath = "C:/Users/Bjit/Downloads/isocial-398406-4b944a65c2f1/isocial-398406-4b944a65c2f1.json"; System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", CredentialPath); строка LanguageCode = "en-US"; вар SpeechClient = SpeechClient.Create(); // Инициализируем входной аудиопоток вар audioStream = новый WaveInEvent (); audioStream.WaveFormat = новый WaveFormat(16000, 16, 1); // При необходимости корректируем формат варstreamingCall = речьКлиент.StreamingRecnigne(); // Начать потоковую передачу с конфигурацией varstreamingConfig = новый StreamingRecognitionConfig { Конфигурация = новая конфигурация распознавания { Кодировка = RecognitionConfig.Types.AudioEncoding.Linear16, СэмплРатеГерц = 16000, Код Языка = Код Языка, EnableAutomaticPunctuation = true, // Включить пунктуацию }, InterimResults = true, // Включить промежуточные результаты }; streamingCall.WriteAsync(новый StreamingRecounceRequest { StreamingConfig = потоковая конфигурация, }); вар interimResultBuilder = новый StringBuilder(); строка LastInterimResult = string.Empty; // Обработка аудиоданных audioStream.DataAvailable += (s, e) => { если (e.Buffer.Length > 0) { streamingCall.WriteAsync(новый StreamingRecounceRequest { AudioContent = Google.Protobuf.ByteString.CopyFrom(e.Buffer, 0, e.BytesRecorded), }); } }; audioStream.StartRecording(); Console.WriteLine("Прослушивание..."); // Запускаем новый поток для прослушивания ответов от сервера вар responseThread = новый поток (async () => { ожидайте foreach (ответ var вstreamingCall.GetResponseStream()) { foreach (результат var в ответе.Результаты) { строковая расшифровка = result.Alternatives[0].Transcript; если (result.IsFinal) { Console.WriteLine(расшифровка); промежуточныйResultBuilder.Очистить(); } иначе, если (IsSignificantChange(расшифровка, LastInterimResult)) { interimResultBuilder.Append(расшифровка); // Разделение промежуточных результатов на полные предложения на основе знаков препинания var interimSentences = interimResultBuilder.ToString().Split(". ", StringSplitOptions.RemoveEmptyEntries); foreach (варное предложение в промежуточных предложениях) { Console.WriteLine("Промежуточный результат: " + предложение + "."); } промежуточныйResultBuilder.Очистить(); } LastInterimResult = стенограмма; } } }); ответПоток.Начать(); Console.WriteLine("Нажмите Enter, чтобы остановить запись..."); Консоль.ReadLine(); // Остановка записи звука и завершение потокового вызова audioStream.StopRecording(); потоковый вызов.WriteCompleteAsync(); ответПоток.Присоединиться(); Console.WriteLine("Нажмите любую клавишу, чтобы выйти..."); Консоль.ReadKey(); } static bool IsSignificantChange (строка currentInterimResult, строка LastInterimResult) { // Настройте эту функцию, чтобы определить, что представляет собой существенное изменение // Здесь мы проверяем, отличается ли текущий результат от последнего результата. return !string.Equals(currentInterimResult, LastInterimResult, StringComparison.OrdinalIgnoreCase); } В качестве вывода речи — здравствуйте, доброе утро, результаты показаны ниже: Промежуточный итог: как. Промежуточный результат: ад. Промежуточный результат: Здравствуйте.. Промежуточный результат: здравствуйте. Промежуточный результат: Здравствуйте. Промежуточный результат: Доброе утро.. Промежуточный результат: Здравствуйте.. Промежуточный результат: Доброе утро.. Промежуточный результат: Здравствуйте. Промежуточный результат: Доброе утро.. Привет. Доброе утро.
Но мой ожидаемый результат печати текста такой же, как при голосовом поиске Google. Когда я говорю «привет», он мгновенно печатает «привет», если я говорю «хорошо», он мгновенно печатает «хорошо», не передавая никаких необычных слов. конечный результат отображается правильно и без каких-либо проблем. Спасибо.
Здесь использовался Google STT, NAudio.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как удалить накладную STT -коробку из API речевого режизализатора в Android Studio?
Anonymous » » в форуме Android - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Скрипт Python с input () и print () не печатайте при запуске из метода класса PowerShell
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-