1

我需要通过 Google Cloud Speech API 进行实时语音识别。但是它仍然是测试版,互联网上没有太多有用的东西。

https://cloud.google.com/speech/docs/samples此处可用的示例很少,但我没有看到带有 C# 的流式 API,这是否意味着我不能使用 C# 将我的音频输入流式传输到 Google Cloud Speech API?

有人尝试过使用 .NET 将音频输入流式传输到 Cloud Speech API 吗?

仅供参考,我无法使用 Google 提供的普通 Web Speech API。我只需要使用 Goolge Cloud Speech API。

4

1 回答 1

4

您必须从此处下载示例应用程序: https ://cloud.google.com/speech/docs/samples

您将找到语音示例:快速入门和识别。

Recogize 有很多选择,其中之一是 Listen。此示例是流式音频,并将结果连续写入控制台。

该示例使用 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();
于 2018-03-06T18:47:27.600 回答