当前位置: 首页 > 知识库问答 >
问题:

C# 中的 Google 语音转文本 API 停止工作

司马越
2023-03-14

我正在尝试使用谷歌语音API将语音转换为文本。我在下面有一个示例代码。它工作正常,它突然停止工作,现在它总是抛出错误 - 400 错误请求。我正在使用GOOGLE_SPEECH_KEY在没有 OAuth2 令牌的情况下进行身份验证。

不知道我到底错过了什么。我是否需要创建 OAuth 身份验证,或者是否需要修改 Google 门户中的任何控制台设置,或者需要修改代码本身?请帮忙!

我使用了以下所有 API 和相同的 400 错误:1. url = “https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=” ACCESS_GOOGLE_SPEECH_KEY;
2. 网址 = “https://speech.googleapis.com/v1/speech:recognize?key=” ACCESS_GOOGLE_SPEECH_KEY;
3. 网址 = “https://speech.googleapis.com/v1p1beta1/speech:recognize?key=” ACCESS_GOOGLE_SPEECH_KEY;

    public static string GoogleSpeechToTextApi(string flacUrl)
    {
        string pTranscriptText = "None", pTranscriptConfidence = "";
        string appendText = "";
        try
        {
            // Stream responseStream = imageResponse.GetResponseStream();             
            if (flacUrl != null)
            {
                string blobURI = flacUrl;
                WebClient myWebClient = new WebClient();
                Stream fileStream = myWebClient.OpenRead(blobURI);
                byte[] BA_AudioFile = null;
                using (var stream2 = new MemoryStream())
                {
                    fileStream.CopyTo(stream2);
                    stream2.SetLength(stream2.Length);
                    stream2.Read(stream2.GetBuffer(), 0, (int)stream2.Length);
                    BA_AudioFile = stream2.GetBuffer();
                }

                string audioInput = Convert.ToBase64String(BA_AudioFile);
                Config config = new Config();
                config.encoding = "flac";
                config.languageCode = "en";
                  config.sampleRate = "8000";

                Audio audio = new Audio();
                audio.content = audioInput;

                JsonRequest request = new JsonRequest();
                request.config = config;
                request.audio = audio;

                string json = JsonConvert.SerializeObject(request);
                string url = "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;  // original api url
                //url = "https://speech.googleapis.com/v1/speech:recognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;                  // tested with this
                //url = "https://speech.googleapis.com/v1p1beta1/speech:recognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;           // tested with this

                WebRequest webRequest = WebRequest.Create(url);
                webRequest.Method = "POST";
                byte[] byteArray = Encoding.UTF8.GetBytes(json);
                webRequest.ContentLength = byteArray.Length;
                Stream dataStream = webRequest.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                WebResponse response = webRequest.GetResponse();
                dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                RootObject ro = JsonConvert.DeserializeObject<RootObject>(responseFromServer);

                dynamic JsonArray = JsonConvert.DeserializeObject(responseFromServer);
                var jsonResult = JsonArray["results"];
                foreach (var item in jsonResult)
                {
                    appendText += item.alternatives[0].transcript;
                }
            }
            return appendText;
        }
        catch (Exception ex)
        {
            return appendText = "Error";
        }
    }

}

}

共有1个答案

莫欣悦
2023-03-14

错误 400 表示您的请求不正确。您可以尝试编码 = linear16audioChannelCount = 2sampleRateHertz = 16000,文件波形。顺便说一句,您可以在标头请求中传递密钥,而不是在您的 url 中传递

 类似资料:
  • 我跟着这首短裙:https://jbinformatique.com/2018/02/16/android-speech-to-text-api-google-tutoriel/ 它工作得很好!它使用android.speech.识别意图包,它是免费的,它可以在没有互联网的情况下工作,正如这里提到的: Android语音到文本API(识别器意图)和Google Cloud Speech API之间

  • 我目前正在从事一个Android AppEngine项目,使用语音作为主要输入方法。在android上,您可以使用语音包将语音命令转换为纯文本。语音识别不是在设备本身上完成的,而是发送到一个谷歌服务器,该服务器返回文本。 供您参考:http://developer.android.com/resources/articles/speech-input.html 我的目标是使用相同的google服务

  • 我似乎在这上面找不到任何东西。iOS7中是否有任何Siri类或API允许您进行文本到语音转换?我所要做的就是如下所示: 然后让Siri从我的应用程序中说出来。 看来我们应该有能力做到这一点,不是吗?似乎是一件微不足道的事情。

  • 使用Microsoft语音API转录中/大型音频文件(每个文件约6-10分钟)的最佳方式是什么?比如批量音频文件转录? 我使用了https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-to-text-sample中提供的代码,用于连续转录语音,但它在某个时候停止转录。转录有任何限制吗?我只使用免

  • [][1]我正在尝试用Vala语言做一个类似siri的应用程序。然而,我找不到任何语音识别或文本到语音库的vala,这是必不可少的。瓦拉有语音识别和语音文字转换吗?如果是的话,你能说出他们的名字吗? 顺便说一句,我是新的vala编程,所以也请做一些例子... 非常感谢。

  • 我已经创建了Google存储桶,为桶中的音频文件执行Google语音到文本的转换。但这不起作用,因为bucket拒绝访问Google语音API。 错误消息:匿名调用方没有存储。对象。获取访问权限\u被拒绝 语音使用API密钥进行身份验证,存储使用服务帐户密钥进行身份验证。我已经授予访问bucket中服务帐户的权限。 是否可以对存储桶进行语音访问? 我也尝试过给服务号桶权限。但是它不起作用。

  • 我试图调用google speech to text api,但它总是返回空结果。我从这个答案中得到了实现提示:在dart、FLATTER中使用gcloud语音api进行实时语音识别 我使用的是颤振声(https://pub.dev/packages/flutter_sound)打包以录制音频,然后将base64编码的音频发送到语音API 录音代码 音频文件android。aac带。从上述代码成功

  • 有没有任何开源项目或库(在java或c),我可以用来将文本转换为用户语音。