我正在构建一个网页,用于记录用户设备中的音频,并将其发送到 Microsoft 的认知语音服务以进行语音到文本的转换。到目前为止,我已经能够创建和播放用 JavaScript 制作的 .ogg 文件,但我需要获取 .wav 格式的文件。
audio/wav不能依赖Blob 类型,因为并非所有浏览器都支持它(至少我的浏览器不支持)。Blob 被发送到 Django 服务器并由其存储。当我尝试使用 PySoundFile 打开这些文件时,收到一条错误消息File contains data in an unknown format: . 使用 来创建new Blob(chunks, { type: 'audio/ogg; codecs=opus' })和保存blob django.db.FileField。Blob 块来自MediaRecorder.ondataavailable.
更新:我放弃了使用MediaRecorder并选择了ScriptProcessorNode。同样,Firefox 可以工作,但 Chrome 不能。Chrome 似乎在音频末尾获取了一小部分,并在音频长度内重复了这一部分。这是我使用的代码,它基于 Matt Diamond 在github.com/mattdiamond/Recorderjs上的工作。使用他的作品的演示可以在webaudiodemos.appspot.com/AudioRecorder/index.html上看到,它对我来说适用于 Firefox 和 Chrome。另外,我原来的代码在一个类中,但我不想包含整个类。如果我在翻译中犯了任何语法错误,我深表歉意。
let recBuffers = [[], []];
let recLength = 0;
let numChannels = 2;
let listening = false;
let timeout = …Run Code Online (Sandbox Code Playgroud)