Google речи в текст Получение неточных результатов с помощью одного и того же вызова функции - PullRequest
1 голос
/ 16 октября 2019

Я надеюсь получить помощь здесь. Я построил программу, которая использует Google Speech-to-Text для преобразования wav-файлов с произносимыми числами в текст. Когда я загружаю их на сайт тестирования речи Google, я получаю правильные результаты, но когда я использую тот же самый вызов функции из моего собственного приложения, некоторые числа проглатываются. Так, например, разговорный номер 1114343 отлично работает на собственном сайте Google, но мой скрипт даст мне, например, 14343. Такое нестабильное поведение не является последовательным (и, между прочим, качество голоса очень хорошим), и это в значительной степени нарушает мою программу, когда мы не можем на это полагаться.

Я потратил некоторое время на отладку и, используя пять альтернативных результатов, иногда получал правильные результаты, поэтому я использовал самый длинный. Это также не работает, потому что он будет использовать результаты с записанными числами "zwei" (два) дольше, чем "2", конечно. У меня также правдивые речевые контекста, но без разницы в результатах.

Кто-нибудь сталкивался с этой проблемой раньше и нашел помощь? С сайта Google, проверив их функцию представления json, я использую один и тот же вызов с разными результатами. Обратите внимание, что я использую немецкий язык в обоих случаях. Заранее спасибо, эта ошибка сводит меня с ума.

GoogleCredential googleCredential;
using (Stream m = new FileStream(keyPath, FileMode.Open))
    googleCredential = GoogleCredential.FromStream(m);
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
    googleCredential.ToChannelCredentials());
var speech = SpeechClient.Create(channel);
var ergebnis = "";
var response = speech.Recognize(new RecognitionConfig()
{
    Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
    EnableAutomaticPunctuation = false,
    Model = "default",
    LanguageCode = "de-DE",
    MaxAlternatives = 5,
    SpeechContexts = { new SpeechContext { Phrases = {  "1", "2", "3", "4", "5", "6", "7", "8", "9", "0","11","12","13","14","15","16","17","18","19","20", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "null","zehn","elf","zwölf","dreizehn","vierzehn","fünfzehn","sechzehn","siebzehn","achtzehn","neunzehn","zwanzig" } } }
}, RecognitionAudio.FromBytes(audioStream));
var wahrscheinlichstesErgebnis = "";

foreach(var result in response.Results)
{
    foreach (var alternative in result.Alternatives)
    {
        Console.WriteLine(alternative.Transcript);
    }

    if (isnumberfield)
    {

        wahrscheinlichstesErgebnis = wahrscheinlichstesErgebnis + " " + result.Alternatives.OrderByDescending(x => Regex.Replace(x.Transcript, @"\D", "").Length).First().Transcript;
    }
    else
    {
        wahrscheinlichstesErgebnis = wahrscheinlichstesErgebnis + " " + result.Alternatives.OrderByDescending(x => x.Transcript.Length).First().Transcript;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...