Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/audio/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 有没有办法在Safari中使用Web音频API提高录制质量?_Audio_Safari_Webrtc_Audio Recording_Web Audio Api - Fatal编程技术网

Audio 有没有办法在Safari中使用Web音频API提高录制质量?

Audio 有没有办法在Safari中使用Web音频API提高录制质量?,audio,safari,webrtc,audio-recording,web-audio-api,Audio,Safari,Webrtc,Audio Recording,Web Audio Api,我正在使用WebRTC以及Web音频API来记录用户的麦克风输入,以便使用进行音频识别(类似于Shazam)。这在Chrome和Firefox中运行良好,似乎录制的质量相当稳定。但是,audD无法识别我在Safari(11.1.2)中录制的视频中发送的blob/文件,因为我猜测音频质量较低(播放几乎听不见)。Safari和audD唯一兼容的音频格式是mp3,所以我就是这样对文件进行编码的 Javascript: //设置为WebAudioRecorder.js记录器实例 让录音机; //设置为

我正在使用WebRTC以及Web音频API来记录用户的麦克风输入,以便使用进行音频识别(类似于Shazam)。这在Chrome和Firefox中运行良好,似乎录制的质量相当稳定。但是,audD无法识别我在Safari(11.1.2)中录制的视频中发送的blob/文件,因为我猜测音频质量较低(播放几乎听不见)。Safari和audD唯一兼容的音频格式是mp3,所以我就是这样对文件进行编码的

Javascript:

//设置为WebAudioRecorder.js记录器实例
让录音机;
//设置为getUserMedia()产生的流
让我们一起流吧;
函数beginRecording(){
if(navigator.mediaDevices.getUserMedia){
log(“开始录制”);
navigator.mediaDevices.getUserMedia({'audio':true})
.then(函数(流){
设AudioContext=window.AudioContext//默认值
||window.webkitAudioContext//Safari和Chrome的旧版本
||虚假的;
如果(音频上下文){
让audioCtx=新的AudioContext;
gumStream=溪流;
let source=audioCtx.createMediaStreamSource(流);
recorder=新的WebAudioRecorder(来源{
workerDir:“web音频记录器js/lib/”,
编码:“mp3”
});
}否则{
警报(“不支持Web音频API”);
}
recorder.setOptions({
时限:120,
记录:对,
ogg:{质量:0.9},
mp3:{比特率:320},
});
记录器。开始记录();
recorder.onComplete=函数(记录器,blob){
创建音频播放(blob);
POSTreq(blob);
}
recorder.onError=函数(recorder,err){
控制台错误(err);
}
})
.catch(函数(err){
控制台错误(err);
})
}
}
函数stopRecording(){
log(“停止录制”);
让recordingTime=recorder.recordingTime();
console.log(记录时间);
让audioTrack=gumStream.getAudioTracks()[0];
console.log(音频跟踪);
audioTrack.stop();
记录器。完成录制();
$('msg_box').text('Recorded for${Math.round(recordingTime)}seconds`);
console.log(“记录已停止”);
}
函数createAudioReplay(blobData){
让url=url.createObjectURL(blobData);
$('body')。追加(``);
}
函数POSTreq(blobData){
设xhr=newXMLHttpRequest();
设fd=newformdata();
fd.append('api_标记','');
追加('file',blobData);
fd.append('method','recognize');
fd.append('return\u itunes\u audios',true);
fd.append(‘itunes_国家’、‘美国’);
xhr.onreadystatechange=函数(){
if(xhr.readyState==4){
parseRetrievedData(xhr.response);
}
}
xhr.open('POST','https://api.audd.io/');
xhr.responseType='json';
xhr.send(fd);
}
函数parseRetrievedData(parseData){
log('来自audD api的数据为:',已解析数据);
}
$(函数(){
$(“#开始按钮”)。单击(函数(e){
开始记录();
$(“#停止按钮”).prop('hidden',false);
});
$(“#停止按钮”)。单击(函数(e){
停止录制();
});

});您是否使用同一台计算机进行所有录制?是。同一台电脑的麦克风。我猜结果会因用户的设备而异,但我认为这是Safari如何录制或编码音频数据的问题。