# 语音识别(预训练模型)
- 什么是语音识别?
模型接受声音信息,输出分类信息
声音在计算机里面是声谱图,因此也可以使用卷积神经网络
使用的是 tensorFlow 官方的语音命令包
# 代码展示
import * as speechCommands from '@tensorflow-models/speech-commands';
const MODEL_PATH = 'http://127.0.0.1:8080/speech';
window.onload = async () => {
/* 创建语音识别器 */
const recognizer = speechCommands.create(
'BROWSER_FFT', // 傅立叶变换
null, // 想要识别哪些单词(null为默认)
MODEL_PATH + '/model.json', // 自定义模型的url
MODEL_PATH + '/metadata.json' // 自定义源信息的url(训练信息)
);
await recognizer.ensureModelLoaded(); // 确保识别器加载完成
const labels = recognizer.wordLabels().slice(2); // 看一下模型能识别哪些内容
console.log('labels', labels);
const resultEl = document.querySelector('#result');
resultEl.innerHTML = labels
.map(
(l) => `
<div>${l}</div>
`
)
.join('');
recognizer.listen(
// 监听函数
(result) => {
// console.log('result', result);
const { scores } = result;
const maxVal = Math.max(...scores); // 获取最大值
const index = scores.indexOf(maxVal) - 2; // 拿到最大值的index(因为数据前两个无用截取掉了)
console.log('labels', labels[index]);
resultEl.innerHTML = labels
.map(
(l, i) => `
<div style="background: ${i === index && 'green'}">${l}</div>
`
)
.join('');
},
{
overlapFactor: 0.1, // 识别频率(0-1越高识别次数越多)
probabilityThreshold: 0.9, // 可能性的预值(高于这个预值listen的回调才会执行)
}
);
};
# 重点笔记
tfjs-models 包是 tfjs 官方的模型库,里面有各种各样的官方训练包 其中的 speech-commands 包是关于语音训练的模型 tfjs-models speech-commands
语音识别器的方法
recognizer.ensureModelLoaded() // 确保识别器加载完成
recognizer.wordLabels() // 看一下模型能识别哪些内容
recognizer.listen() // 监听识别
recognizer.stopListening() // 停止识别