Запрос на синхронизацию gRPC API Google Speech обрабатывает только первые слова - PullRequest
0 голосов
/ 30 декабря 2018

Google Speech API через gRPC распознает только первые несколько слов.Протестировано с использованием нескольких коротких (<10 с) аудиофайлов в нескольких (wav, flac) форматах.</p>

Я пытаюсь настроить речевой API Google для работы с Delphi с помощью gRPC.(Вызов API речи из Delphi с использованием JSON работает нормально, но не поддерживает потоковую передачу) Поскольку Google не поддерживает Delphi в качестве клиента gRPC, я использую буфер протокола Grijjy для сериализации / десериализации аудио-запроса / ответа и Масштабируемые сокеты Grijjy для запроса http / 2.

Поскольку я думаю, что код слишком велик, чтобы делиться с ним, я создал MVCE.ZIP-файл, содержащий исходный код (Delphi 10.3), исполняемый файл и аудиофайл, можно найти здесь .Аудиофайл содержит текст «Сколько лет Бруклинскому мосту», который безошибочно распознается при вызове Speech API через JSON.

Для запуска исполняемого файла только ключ API Google необходимо.Необходимый файл поддержки nghttp2.dll включен.После отправки запроса отображается окно сообщения с десериализованным ответом.Я проверил, что это полный ответ Google, проверив размер данных ответа.Ответ показывает только «сколько лет», где я бы ожидал полного признанного предложения.Ошибки не возвращаются, коэффициент достоверности также возвращается.

Чтобы скомпилировать исходный код, указанный выше код Grijjy должен быть загружен с Github, а папка (и), содержащая загруженный код, сделана доступной для проекта Delphi.

Кроме того, чтобы Google принял запрос, в grijjy.http необходимо изменить строку 1215 с

 FInternalHeaders.AddOrSet('host', FURI.Host);

на

FInternalHeaders.AddOrSet(':authority', FURI.Host);

(мне не удалось создатьзапрос на это ранее сегодня, попробую еще раз позже)

Во время отладки я также проверил заголовки ответа (200 OK), также пробовал другие файлы (та же проблема).

ПокаЯ не знаю, как продолжить.Любые идеи относительно того, как найти причину (или даже лучше, решение этой проблемы :-)), будут высоко оценены.

...