1

Xamarin.Forms PCL プロジェクト (Portable Class Library) 内で Google Cloud Speech Api に対して認証しようとしています。私はAndroid-Phoneでテストしています。私のソリューションのコードは次のようになります。

        Assembly assembly = typeof(Program).GetTypeInfo().Assembly;
        Stream stream = assembly.GetManifestResourceStream("ConsoleApp1.speech_auth.json");

        string resultString = null;

        using (StreamReader reader = new StreamReader(stream))
        {
            resultString = reader.ReadToEnd();
        }

        GoogleCredential credential = GoogleCredential.FromJson(resultString);

        if (credential.IsCreateScopedRequired)
        {
            credential = credential.CreateScoped(new[] { "https://www.googleapis.com/auth/cloud-platform" });
        }

        var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
            credential.ToChannelCredentials());

        var speech = SpeechClient.Create(channel);
        var response = speech.Recognize(new RecognitionConfig()
                                            {
                                                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                                                SampleRateHertz = 16000,
                                                LanguageCode = "de-CH",
                                            }, RecognitionAudio.FromFile("test.flac"));

通常の .NET ConsoleApplication-Project では、魅力のように機能します。ただし、PCL プロジェクト内でまったく同じコードを試すと、次の行でエラーが発生します。

 var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
            credential.ToChannelCredentials());

それは言う:

未処理の例外: System.NotImplementedException: メソッドまたは操作が実装されていません

Nuget GRPC と Google Speech API パッケージをすべて PCLAndroid プロジェクトにインストールしました。

だから私の質問は:

Xamarin.Forms を使用して、Google Cloud Speech API を認証するより良い/簡単な方法はありますか? そうでない場合、私のコードの問題は何ですか?

編集: Xamarin はgRPC をサポートしていないようです。シンプルな httpClient を使用してリクエストを送信する音声 API を呼び出すことができました。

4

0 に答える 0