Печатайте точные промежуточные слова в реальном времени из Google SttC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Печатайте точные промежуточные слова в реальном времени из Google Stt

Сообщение Anonymous »


Как распечатать текст произнесенных слов в реальном времени из 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.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»