我想为我的 react-native 应用程序使用 Azure 的 STT REST API 并录制音频。但我尝试搜索如何传递 wav 文件但总是响应“未收到音频数据”或其他错误响应。
我非常确定订阅密钥是有效的,因为当我使用获取令牌时它会响应 200。wav 文件也不是问题。因为当我将文件下载到我的计算机然后将其上传到 Azure STT 的主页时,它会响应正确答案。最后,我试图弄清楚如何以正确的形式传递它,但一切都是为了网站。这是我的代码`
const file = new ReactNativeFile({
uri:
`file://${audioFile}`,
type: 'audio/wav',
name: 'ABCS160101e1a011b160a3e169d7b0.wav',
});
let form = new formData();
const headers = {
'Ocp-Apim-Subscription-Key': 'MyKey',
'Content-type': 'audio/wav; codecs=audio/pcm;samplerate=16000',
Accept: 'application/json',
};
const url = `https://eastasia.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US`;
await form.append('audio', file);
console.log('before');
let response = await axios.post(url, form, {
headers: headers,
});
console.log('after');
console.log('result', JSON.stringify(response));
} catch (err) {
getlog.cw('err23', err);
return err;
}
};`
这是我在另一个地方的录音功能,它正在播放。
import AudioRecord from 'react-native-audio-record';
const options = {
sampleRate: 16000, // default 44100
bitsPerSample: 16, // 8 or 16, default 16,
wavFile: "ABCS160101e1a011b160a3e169d7b0.wav"
};
const toggleRecord = async () => {
if (isRecording) {
const audioFile = await AudioRecord.stop();
setIsRecording(false);
// reloadRecorder();
} else {
setIsRecording(true);
AudioRecord.init(options);
AudioRecord.start();
}
};