Javascript 无法使用ML5.js pitchdetection获取频率值
我使用ML5.js和P5.js来检测乐器的音高。当我允许使用麦克风时,我无法检测频率(获取空值)。回调函数工作正常。下面是我编写的以下代码Javascript 无法使用ML5.js pitchdetection获取频率值,javascript,machine-learning,Javascript,Machine Learning,我使用ML5.js和P5.js来检测乐器的音高。当我允许使用麦克风时,我无法检测频率(获取空值)。回调函数工作正常。下面是我编写的以下代码 <!DOCTYPE html> <html lang="en"> <head> <title>DSP Pitch detector!</title> <meta name="viewport" content="width=device-width, initial-sca
<!DOCTYPE html>
<html lang="en">
<head>
<title>DSP Pitch detector!</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- p5 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/addons/p5.dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/addons/p5.sound.min.js"></script>
<!-- ml5 -->
<script src="https://unpkg.com/ml5@0.4.0/dist/ml5.min.js"></script>
</head>
<body>
<p>this is detection</p>
<script>
// Your code will go here
// open up your console - if everything loaded properly you should see 0.3.1
const model_url = 'https://cdn.jsdelivr.net/gh/ml5js/ml5-data-and-models/models/pitch-detection/crepe/';
let pitch;
let audioContext;
let mic;
let freq = 0;
console.log('ml5 version:', ml5.version);
//p5.js
function setup(){
createCanvas(600, 600);
audioContext = getAudioContext();
mic = new p5.AudioIn();
mic.start(listening);
}
//once listening modal is loaded
//once modal is loaded we'll call get pitch and got pitch
function listening() {
console.log('listening!!');
pitch = ml5.pitchDetection(
model_url,
audioContext,
mic.stream,
modelLoaded
);
}
function modelLoaded() {
console.log('modal loaded!!');
pitch.getPitch(gotPitch);
}
function gotPitch(error, frequency){
if(error){
console.error(error)
}
else{
if(frequency){
freq = frequency;
}
// console.log(frequency);
}
// once you got the pitch and you loaded it ... you watch to decet the pitch again
pitch.getPitch(gotPitch);
}
function draw(){
background(200);
textAlign(CENTER,CENTER);
fill(255);
textSize(64);
text(freq.toFixed(2), width/2,height/2)
}
</script>
</body>
</html>
DSP俯仰检测器!
这是检测
//你的代码会在这里
//打开您的控制台-如果所有内容都正确加载,您将看到0.3.1
常数模型https://cdn.jsdelivr.net/gh/ml5js/ml5-data-and-models/models/pitch-detection/crepe/';
让我来投球;
让听觉语境;
让麦克风;
设freq=0;
log('ml5版本:',ml5.version);
//p5.js
函数设置(){
createCanvas(600600);
audioContext=getAudioContext();
麦克风=新的p5.AudioIn();
麦克风启动(监听);
}
//一旦加载了侦听模式
//模态加载后,我们将调用get pitch和get pitch
函数监听(){
log('listing!!');
俯仰=ml5.5俯仰检测(
模型url,
音频背景,
麦克·斯特朗,
模型加载
);
}
函数modelLoaded(){
log('modal loaded!!');
基音。getPitch(gotPitch);
}
功能变桨(误差、频率){
如果(错误){
控制台错误(错误)
}
否则{
中频(频率){
频率=频率;
}
//控制台日志(频率);
}
//一旦你得到了球,你把球装上……你就要看着球再次下降
基音。getPitch(gotPitch);
}
函数绘图(){
背景(200);
textAlign(居中,居中);
填充(255);
文本大小(64);
文本(频率固定(2),宽度/2,高度/2)
}
当它听到音频时,我应该得到频率值,但我得到的是空值