<snapdata remixID="11460035"><project name="MachineLearningAudio" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="MachineLearningAudio"><notes></notes><palette><category name="Machine Learning" color="0,199,117,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Load Image Libraries" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>2</l><script><block s="doRun"><block s="reportJSFunction"><list></list><l>   let script = document.createElement("script");&#xD;   script.type = "text/javascript"; &#xD;   script.src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js";  &#xD;   document.head.appendChild(script);&#xD;   let script2 = document.createElement("script");&#xD;   script2.type = "text/javascript";&#xD;   script2.src = "https://cdn.jsdelivr.net/npm/@teachablemachine/image@0.8/dist/teachablemachine-image.min.js";&#xD;   document.head.appendChild(script2);  </l></block><list></list></block><block s="doWait"><l>1</l></block></script></block></script></block-definition><block-definition s="Load Image Model %&apos;URL&apos;" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>URL</l></list><l>const when_loaded = (loaded_model) =&gt; {&#xD;  console.log("loading model")&#xD;  window.imageModel = loaded_model;&#xD;};&#xD;&#xD;const modelURL = URL + "model.json"; // model topology&#xD;const metadataURL = URL + "metadata.json"; // model metadata&#xD;&#xD;const recognizer = tmImage.load(modelURL, metadataURL).then(when_loaded);     </l></block><list><block var="ImageModelURL"/></list></block></script></block-definition><block-definition s="Image Model Predict" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>predictionJS</l></list></block><block s="doDeclareVariables"><list><l>predictionList</l></list></block><block s="doRun"><block s="reportJSFunction"><list><l>videoCapture</l></list><l>const report_predictions = (prediction) =&gt; {&#xD;   let class_names = window.imageModel.getClassLabels();&#xD;   let names_and_scores = prediction.map((score, index) =&gt; [class_names[index], score.probability]);&#xD;   &#xD;   //console.log(class_names)&#xD;&#xD;   var predictionList = []&#xD;&#xD;   // This loop is for outer array&#xD;   for (var i = 0; i &lt; names_and_scores.length; i++) {&#xD;      if (names_and_scores[i].length &gt; 1) {&#xD;         predictionList.push([class_names[i],names_and_scores[i][1]]) &#xD;         //console.log([class_names[i], predictionList[i]])&#xD;      }&#xD;   }&#xD;&#xD;   window.prediction = predictionList&#xD;};&#xD;&#xD;const prediction = window.imageModel.predict(videoCapture.contents).then(report_predictions);   &#xD;//console.log(prediction)        </l></block><list><block s="reportVideo"><l><option>snap</option></l><l>Stage</l></block></list></block><block s="doSetVar"><l>predictionJS</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.prediction</l></block><list></list></block></block><block s="doSetVar"><l>predictionList</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block var="predictionJS"/></list></block><l>,</l></block></block><block s="doSetVar"><l>ImageModelTable</l><block s="reportReshape"><block var="predictionList"/><list><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block var="predictionList"/></block><l>2</l></block><l>2</l></list></block></block><block s="doSetVar"><l>ImageModelPrediction</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><block var="ImageModelTable"/></block></block></script></block-definition><block-definition s="Load Audio Libraries" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>2</l><script><block s="doRun"><block s="reportJSFunction"><list></list><l>let script = document.createElement("script");&#xD;script.type = "text/javascript";&#xD;script.src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js";&#xD;document.head.appendChild(script);&#xD;let script2 = document.createElement("script");&#xD;script2.type = "text/javascript";&#xD;script2.src = "https://cdn.jsdelivr.net/npm/@tensorflow-models/speech-commands@0.4.0/dist/speech-commands.min.js";&#xD;document.head.appendChild(script2);  </l></block><list></list></block><block s="doWait"><l>1</l></block></script></block></script></block-definition><block-definition s="Load Audio Model %&apos;URL&apos;" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>URL</l></list><l>const checkpointURL = URL + "model.json"; // model topology&#xD;const metadataURL = URL + "metadata.json"; // model metadata&#xD;&#xD;const recognizer = speechCommands.create("BROWSER_FFT", undefined, checkpointURL, metadataURL);&#xD;&#xD;// check that model and metadata are loaded via HTTPS requests.&#xD;while (!recognizer.ensureModelLoaded()){}&#xD;&#xD;// Set a global variable for the recognizer&#xD;window.recognizer = recognizer&#xD;     </l></block><list><block var="AudioModelURL"/></list></block></script></block-definition><block-definition s="Stop Listening" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>window.recognizer.stopListening()</l></block><list></list></block></script></block-definition><block-definition s="Audio Model Predict" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>predictionJSAudio</l></list></block><block s="doDeclareVariables"><list><l>predictionListAudio</l></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>const report_predictionsAudio = (predictionAudio) =&gt; {&#xD;   let class_names = recognizer.wordLabels()&#xD;   let names_and_scores = Array.prototype.slice.call(predictionAudio.scores).map((score, index) =&gt; [class_names[index], score]);&#xD;&#xD;   //console.log(class_names)&#xD;&#xD;   var predictionListAudio = []&#xD;&#xD;   // This loop is for outer array&#xD;   for (var i = 0; i &lt; names_and_scores.length; i++) {&#xD;      if (names_and_scores[i].length &gt; 1) {&#xD;         predictionListAudio.push([class_names[i],names_and_scores[i][1]]) &#xD;         //console.log([class_names[i], predictionList[i]])&#xD;      }&#xD;   }&#xD;&#xD;   window.predictionAudio = predictionListAudio&#xD;   //console.log(predictionList)&#xD;};&#xD;&#xD;// listen() takes two arguments:&#xD;// 1. A callback function that is invoked anytime a word is recognized.&#xD;// 2. A configuration object with adjustable fields&#xD;window.recognizer.listen(report_predictionsAudio, {invokeCallbackOnNoiseAndUnknown: true});&#xD;           </l></block><list></list></block><block s="doUntil"><block s="reportKeyPressed"><l><option>x</option></l></block><script><block s="doSetVar"><l>predictionJSAudio</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.predictionAudio</l></block><list></list></block></block><block s="doSetVar"><l>predictionListAudio</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block var="predictionJSAudio"/></list></block><l>,</l></block></block><block s="doSetVar"><l>AudioPredictionTable</l><block s="reportReshape"><block var="predictionListAudio"/><list><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block var="predictionListAudio"/></block><l>2</l></block><l>2</l></list></block></block><block s="doSetVar"><l>AudioPrediction</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><block var="AudioPredictionTable"/></block></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>window.recognizer.stopListening()</l></block><list></list></block></script></block-definition><block-definition s="Load Pose Libraries" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>2</l><script><block s="doRun"><block s="reportJSFunction"><list></list><l>   let script = document.createElement("script");&#xD;   script.type = "text/javascript"; &#xD;   script.src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js";  &#xD;   document.head.appendChild(script);&#xD;   let script2 = document.createElement("script");&#xD;   script2.type = "text/javascript";&#xD;   script2.src = "https://cdn.jsdelivr.net/npm/@teachablemachine/pose@0.8/dist/teachablemachine-pose.min.js";&#xD;   document.head.appendChild(script2);  </l></block><list></list></block><block s="doWait"><l>1</l></block></script></block></script></block-definition><block-definition s="Load Pose Model %&apos;URL&apos;" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>URL</l></list><l>const when_loaded = (loaded_model) =&gt; {&#xD;  console.log("loading model")&#xD;  window.poseModel = loaded_model;&#xD;};&#xD;&#xD;const modelURL = URL + "model.json"; // model topology&#xD;const metadataURL = URL + "metadata.json"; // model metadata&#xD;&#xD;const recognizer = tmPose.load(modelURL, metadataURL).then(when_loaded);     </l></block><list><block var="PoseModelURL"/></list></block></script></block-definition><block-definition s="Pose Model Predict" type="command" category="Machine Learning"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>posePredictionJS</l></list></block><block s="doDeclareVariables"><list><l>posePredictionList</l></list></block><block s="doRun"><block s="reportJSFunction"><list><l>videoCapture</l></list><l>const report_predictionsPose = (posePrediction) =&gt; {&#xD;   let class_names = window.poseModel.getClassLabels();&#xD;   let names_and_scores = posePrediction.map((score, index) =&gt; [class_names[index], score.probability]);&#xD;   &#xD;   //console.log(posePrediction)&#xD;&#xD;   window.posePrediction = names_and_scores&#xD;};&#xD;&#xD;const make_pose_prediction = (pose) =&gt; {&#xD;   poseModel.predict(pose.posenetOutput).then(report_predictionsPose);&#xD;} &#xD;&#xD;// Have to estimate the pose and then run it through the teachable machine&#xD;window.poseModel.estimatePose(videoCapture.contents).then(make_pose_prediction);&#xD;     </l></block><list><block s="reportVideo"><l><option>snap</option></l><l>Stage</l></block></list></block><block s="doSetVar"><l>posePredictionJS</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.posePrediction</l></block><list></list></block></block><block s="doSetVar"><l>posePredictionList</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block var="posePredictionJS"/></list></block><l>,</l></block></block><block s="doSetVar"><l>PoseModelTable</l><block s="reportReshape"><block var="posePredictionList"/><list><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block var="posePredictionList"/></block><l>2</l></block><l>2</l></list></block></block><block s="doSetVar"><l>PoseModelPrediction</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><block var="PoseModelTable"/></block></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="327"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="328"></list></costumes><sounds><list struct="atomic" id="329"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="334"><costumes><list struct="atomic" id="335"></list></costumes><sounds><list struct="atomic" id="336"></list></sounds><blocks></blocks><variables></variables><scripts><script x="62" y="49"><block s="receiveKey"><l><option>l</option></l><list></list><comment w="323.9697265625" collapsed="false">Enter the full URL from Google Teachable Machine here. Hit enter, then hit the l key to load the library. If the URL loaded correctly it will show up on the stage.</comment></block><block s="doSetVar"><l>AudioModelURL</l><l></l></block><custom-block s="Load Audio Libraries"></custom-block><custom-block s="Load Audio Model %txt"><block var="AudioModelURL"/></custom-block></script><script x="65" y="221.16666666666669"><block s="receiveKey"><l><option>space</option></l><list></list></block><custom-block s="Audio Model Predict"><comment w="151" collapsed="false">Press space to start predicting. This will take up to 60 seconds to start running. Repeat until x pressed is built into this block.</comment></custom-block></script><script x="73" y="354.1666666666667"><block s="receiveKey"><l><option>space</option></l><list></list></block><block s="doUntil"><block s="reportKeyPressed"><l><option>x</option></l><comment w="284" collapsed="false">Sample code demonstrating how to use the model predictions.</comment></block><script><block s="doIf"><block s="reportGreaterThan"><block s="reportListItem"><l>1</l><block var="AudioPrediction"/></block><l>0.90</l></block><script><block s="doSayFor"><l>What did you say?</l><l>2</l></block></script></block></script></block></script></scripts></sprite><watcher var="AudioPrediction" style="normal" x="10" y="94.00000799999998" color="243,118,29" hidden="true"/><watcher var="AudioModelURL" style="normal" x="13" y="16.000005999999985" color="243,118,29"/><watcher var="AudioPredictionTable" style="normal" x="15" y="56.000009999999975" color="243,118,29"/></sprites></stage><variables><variable name="AudioModelURL"><l>0</l></variable><variable name="AudioPrediction"><list struct="atomic" id="382">0,0</list></variable><variable name="AudioPredictionTable"><l>0</l></variable></variables></scene></scenes></project><media name="MachineLearningAudio" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>