在 React 中训练用于语音识别的 Tenserflow 模型

Why*_*ync 5 speech-to-text tensorflow

我正在使用 Electron + ReactJS 和 Tenserflow。

我希望在我说话时能够识别 500-1000 个单词,例如“狗”、“换行符”、“猫”。

  1. 500个单词训练模型需要多长时间?我用了5个字,花了一些时间。我不想拥有装载机,也不想花太多时间在客户端上进行培训。我可以在服务器上训练模型并将其获取给用户,还是需要在用户每次进入应用程序时都进行训练?
  2. 我尝试使用模型训练,但它不起作用。而且我什至没有说话,它显示随机单词。我没有找到太多关于tenserflow javascript中模型训练的信息。如果collectExample只是传输单词,我如何使用自定义单词训练模型?

而且我对 Tenserflow 还很陌生。这是代码:

const loadModel = async () => {
    setLoading(true);

    // start loading model
    const recognizer = await speech.create('BROWSER_FFT');
    // check if model is loaded
    await recognizer.ensureModelLoaded();
    
    const transferRecognizer = recognizer.createTransfer('programming');
    await transferRecognizer.collectExample('cat');
    await transferRecognizer.collectExample('dog');
    await transferRecognizer.collectExample('newline');

    await transferRecognizer.collectExample('_background_noise_');
    await transferRecognizer.collectExample('newline');
    await transferRecognizer.collectExample('dog');
    await transferRecognizer.collectExample('cat');
    await transferRecognizer.collectExample('_background_noise_');

    await transferRecognizer.train({
      epochs: 25,
      callback: {
        onEpochEnd: async (epoch, logs) => {
          console.log(`Epoch ${epoch}: loss=${logs.loss}, accuracy=${logs.acc}`);
        }
      }
    });

    setModel(transferRecognizer);
    // store command word list to state
    console.log('transferRecognizer.wordLabels():', transferRecognizer.wordLabels());
    setLabels(transferRecognizer.wordLabels());

    setLoading(false);
  };

Run Code Online (Sandbox Code Playgroud)

  const recognizeCommands = async () => {
    model?.listen(
      result => {
        // add argMax function
        setAction(labels[argMax(Object.values(result.scores))]);
      },
      { includeSpectrogram: true, probabilityThreshold: 0.9 }
    );
  };

Run Code Online (Sandbox Code Playgroud)