Google Cloud Streaming Speech API

Мне нужно распознавание речи в реальном времени через Google Cloud Speech API. Однако он все еще находится в бета-версии, и в Интернете не так много полезных вещей.

https://cloud.google.com/speech/docs/samples есть несколько образцов доступен здесь, но я не вижу потокового API с C #. Означает ли это, что я не могу использовать C # для передачи звука через Google Cloud Speech API?

Кто-нибудь пробовал передавать потоковое аудио в Cloud Speech API с помощью .NET?

К вашему сведению, я не могу использовать обычный Web Speech API, доступный от Google. Мне нужно использовать только Goolge Cloud Speech API.


person Paresh Varde    schedule 26.10.2016    source источник
comment
Кажется, есть люди, которые сделали это на C #. Однако отсутствуют образцы кодов. groups.google.com/forum/#!topic/cloud- Speech-Discussion / Если вы что-нибудь найдете, дайте мне знать. Я сам искал ответ.   -  person Hespen    schedule 07.11.2016
comment
Хеспен, для временного решения я ввел бинарный сервер node.js и подключился к моему JS через веб-сокет для потоковой передачи звука. Затем Node.js связывается с Google Cloud Speech API. Это решение, похоже, сейчас работает хорошо, но я действительно ищу C #, чтобы сделать его простым и понятным.   -  person Paresh Varde    schedule 14.11.2016
comment
Спасибо за информацию!   -  person Hespen    schedule 14.11.2016
comment
@PareshVarde, не могли бы вы опубликовать несколько примеров кода для реализации node.js, которую вы сделали? Это будет реальная помощь для меня   -  person Kiran B    schedule 09.05.2017


Ответы (1)


Вы должны загрузить образцы приложений отсюда: https://cloud.google.com/speech/docs/samples

Вы найдете образцы речи: QuickStart и Recognize.

У Recogize много опций, и одна из них - Слушать. Этот образец является потоковым аудио и непрерывно записывает результат на консоль.

В этом примере для потоковой передачи используется байтовый поток protobuf. Вот основная часть кода:

var credential = GoogleCredential.FromFile( "privatekey.json" ).CreateScoped( SpeechClient.DefaultScopes );
var channel = new Grpc.Core.Channel( SpeechClient.DefaultEndpoint.ToString(), credential.ToChannelCredentials() );
var speech = SpeechClient.Create( channel );
var streamingCall = speech.StreamingRecognize();
// Write the initial request with the config.
await streamingCall.WriteAsync(
    new StreamingRecognizeRequest()
    {
        StreamingConfig = new StreamingRecognitionConfig()
        {
            Config = new RecognitionConfig()
            {
                Encoding =
                RecognitionConfig.Types.AudioEncoding.Linear16,
                SampleRateHertz = 16000,
                LanguageCode = "hu",
            },
            InterimResults = true,
        }
    } );

конечно язык надо поменять.

Затем должен быть потоковый контент:

streamingCall.WriteAsync(
    new StreamingRecognizeRequest()
    {
        AudioContent = Google.Protobuf.ByteString
            .CopyFrom( args.Buffer, 0, args.BytesRecorded )
    } ).Wait();
person György Gulyás    schedule 06.03.2018