【发布时间】:2019-11-30 07:14:32
【问题描述】:
我在 C# 控制台 API 中实现了 Google Cloud Speech API。现在我想在 HTML 页面上实现相同的功能。以下是我遵循的步骤:
- 使用媒体记录器捕获 HTML 页面上的声音并将其发布到 WEB API:
mediaRecorder.ondataavailable = function (e) {
chunks.push(e.data);
var blob = new Blob(chunks, { 'type': 'audio/wav; codecs=0' });
var fd = new FormData();
fd.append('fname', 'test.wav');
//fd.append('data', chunks[0]);
fd.append('data', blob);
$.ajax({
type: 'POST',
url: APIUrl,
data: fd,
processData: false,
contentType: false
}).done(function (data) {
console.log(data);
});
- 在 WEB API 上,我使用的是 Google Cloud 语音识别。但幸运的是,它返回空响应。 google Audio.raw 提供的测试文件使用相同的代码可以正常工作。但是从网页发送的任何音频都没有提供任何结果。
string text = "";
var speech = SpeechClient.Create();
var response = speech.Recognize(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.OggOpus,
SampleRateHertz = 48000,
LanguageCode = "en",
}, RecognitionAudio.FromStream(HttpContext.Current.Request.Files[0].InputStream));
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
text = alternative.Transcript;
}
}
我尝试过 Encoding 和 Hertz 的不同组合。但没有一个有效。我还尝试先将音频以 WAV 格式保存在本地驱动器上,然后从本地文件中读取响应。但它也不起作用。
【问题讨论】:
标签: javascript c# mediarecorder google-speech-api