Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
143 views
in Technique[技术] by (71.8m points)

html - How do i play audio after prediction with Tensorflow.js in Javascript?

Before I say what I want to know I shall explain the project.

It uses a really simple machine learning model: https://teachablemachine.withgoogle.com/models/XB7_Ta3Iy/

And for example when an image of the avengers show up on the webcam is will give an number; a 1 is 100% sure and a 0 is 0%.

I it to play a audiofile whenever it gets above a certain percentage but I can't seem to make it work.

<!DOCTYPE html>
<html>
<head>
   <script src="geluid.js"></script>
   <script src="sketch.js"></script>

</head>
<body>
  


   <div>Teachable Machine Image Model</div>
<button type="button" onclick="init()">Start</button>
<div id="webcam-container"></div>
<div id="label-container"></div>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/[email protected]/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@teachablemachine/[email protected]/dist/teachablemachine-image.min.js"></script>
<script type="text/javascript">
   // More API functions here:
   // https://github.com/googlecreativelab/teachablemachine-community/tree/master/libraries/image

   // the link to your model provided by Teachable Machine export panel
   const URL = "https://teachablemachine.withgoogle.com/models/XB7_Ta3Iy/";

   let model, webcam, labelContainer, maxPredictions;

   // Load the image model and setup the webcam
   async function init() {
       const modelURL = URL + "model.json";
       const metadataURL = URL + "metadata.json";

       // load the model and metadata
       // Refer to tmImage.loadFromFiles() in the API to support files from a file picker
       // or files from your local hard drive
       // Note: the pose library adds "tmImage" object to your window (window.tmImage)
       model = await tmImage.load(modelURL, metadataURL);
       maxPredictions = model.getTotalClasses();

       // Convenience function to setup a webcam
       const flip = true; // whether to flip the webcam
       webcam = new tmImage.Webcam(200, 200, flip); // width, height, flip
       await webcam.setup(); // request access to the webcam
       await webcam.play();
       window.requestAnimationFrame(loop);

       // append elements to the DOM
       document.getElementById("webcam-container").appendChild(webcam.canvas);
       labelContainer = document.getElementById("label-container");
       for (let i = 0; i < maxPredictions; i++) { // and class labels
           labelContainer.appendChild(document.createElement("div"));
       }
   }

   async function loop() {
       webcam.update(); // update the webcam frame
       await predict();
       window.requestAnimationFrame(loop);
   }

   // run the webcam image through the image model
   async function predict() {
       // predict can take in an image, video or canvas html element
       const prediction = await model.predict(webcam.canvas);
       for (let i = 0; i < maxPredictions; i++) {
           const classPrediction =
               prediction[i].className + ": " + prediction[i].probability.toFixed(2);
           labelContainer.childNodes[i].innerHTML = classPrediction;
       }
   }
</script>

</body>
</html>

This .js file is used in another project where it works fine but it plays whenever a word is spoken.

var resultP;
var audio = nummers;

function playSound(file){
  var cAudio = new Audio("Left1.mp3");
  cAudio.play();
  
}

function play2Sound(file){
  var cAudio = new Audio("up.mp3");
  cAudio.play();
}

function stopsound(file) {
  var cAudio = new Audio("Left1.mp3");
  cAudio.pause();
}

var nummers = geluid.filter(zoeken);

function zoeken(geluid) {

return geluid.Titel.includes("Left");

}

console.log(nummers);

var nummers2 = geluid.filter(zoeken2);

function zoeken2(geluid) {
return geluid.Titel.includes("Up");

}


function preload() {
  let options = { probabilityThreshold: 0.98 };
  soundClassifier = ml5.soundClassifier('SpeechCommands18w', options);

}

function setup() {
  createCanvas(400, 400);
  resultP = createP('waiting...');
  resultP.style('font-size','32pt');
  soundClassifier.classify(gotResults);
}

function gotResults(error, results) {
  if (error) {
    console.log('something went wrong');
    console.error(error);
  }
  resultP.html(results[0].label);
  console.log (results[0].label);
  good(results[0].label);
}


function good (label)
{
  if (label === 'left') {
    console.log ('good fun');
    var vinden = Math.floor(Math.random() * nummers.length);
    var denaam = nummers[vinden]

    resultP.html('left' + '<br>' + '<br>' + 'Song: ' +  denaam.Titel + '<br>'+ '<br>'+ 'Artist: ' + denaam.Artist);
   
    playSound(denaam.Nummer);
  } 
else 
{
  console.log ('gestopt')
  
  //audio.pause();
  //audio.currentTime = 20;
}


{
  if (label === 'up') {
    console.log ('good fun');
    var vinden = Math.floor(Math.random() * nummers2.length);
    var denaam = nummers2[vinden]

    resultP.html('up' + '<br>' + '<br>' + 'Song: ' +  denaam.Titel + '<br>'+ '<br>'+ 'Artist: ' + denaam.Artist);
    

    
    play2Sound(denaam.Nummer);
  } 
else 
{
  console.log ('gestopt')
  
  //audio.pause();
  //audio.currentTime = 20;
}




}


}
question from:https://stackoverflow.com/questions/65893353/how-do-i-play-audio-after-prediction-with-tensorflow-js-in-javascript

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...