gpt4 book ai didi

speech-to-text - getUserMedia MediaRecorder 数据丢失

转载 作者:行者123 更新时间:2023-12-05 07:33:19 27 4
gpt4 key购买 nike

我正在尝试在我的 Angular 项目中录制音频。为此,我使用了 MediaStream Recording API ( https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Recording_API)。

它确实记录了我的音频输入,我可以根据我提供的类型下载音频文件。为此,我正在使用这段代码。

navigator.mediaDevices.getUserMedia({audio: true, video: false})
.then(stream => {
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();

mediaRecorder.ondataavailable = event => {
audioChunks.push(event.data);
this.translate(audioChunks);
};

this.stopRecording = setTimeout(async() => {
await mediaRecorder.stop();
}, 5000);
});

blob = new Blob(audio, { 'type' : 'audio/x-flac; rate=44100; codecs=opus' });
url = window.URL.createObjectURL(blob);

之后,我将数据作为 byteArray 发送到我的 REST API,并使用(https://www.google.com/speech-api/v2/recognize?)将其发送到 Google Speech API v2

现在,当我自己创建一个音频文件时这会起作用,但是当我使用 MediaRecorder 时,我得到的响应是空的。现在我检查了音频文件属性,发现缺少某些属性(音频长度和比特率)。除了属性之外,我确实听到了这些文件的音频。

有什么方法可以添加这些属性,或者是否有更好的 API 可以用于此目的?

最佳答案

处理类似的情况,并从语音 API 获得相同的空响应

你能证实你创建的 blob 对象中确实有一些东西吗?我使用 onstop 创建 blob,然后将其转换为 base64 并传递给请求。 (拆分并省略作为标题的第一部分)

    mediaRecorder.onstop = (e) => {
const blob = chunks[0];//new Blob(chunks, { 'type': 'audio/webm;codec=opus' });
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
const base64data = reader.result;
console.info('sending request to gcloud');
expect(base64data).to.exist;

gCloudRequest(base64data.split(',')[1])

关于speech-to-text - getUserMedia MediaRecorder 数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50681306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com