SpeechRecognitionを使って音声をテキストに変換

SpeechRecognitionを使って音声をテキストに変換

window.SpeechRecognition (何故かChromeだとwebkitの接頭辞が必要?) を使ってWebだけで音声からテキストに変換。
喋った内容がそのままテキストになる便利(?)機能を使ってみました。
こんな感じに単純なアプリ作ります。

アプリ作成

Vue.js で単純なアプリ作成します。
App.vue の中身を以下に書き換え。

<script setup>
import { ref, onMounted } from 'vue';

const speech = ref(null)
const texts = ref([])

onMounted(() => {
  if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {
    alert("お使いのブラウザは音声認識に対応しておりません")
    return
  }
  // マイク準備
  const SpeechRecognition = window.SpeechRecognition || webkitSpeechRecognition;
  speech.value = new SpeechRecognition()
  speech.value.lang = 'ja-JP'
  speech.value.onresult = (e) => {
    // 音声認識のテキストを取得
    if (e.results[0].isFinal) {
      texts.value.push(e.results[0][0].transcript)
    }
  }
  speech.value.onend = () => {
    // 音声認識が切断されたので再度開始
    speech.value.start()
  }
  speech.value.start()
})

</script>

<template>
    <h1>webkitSpeechRecognitionでマイクから音声認識</h1>
    <span style="color: #f00">マイクに向かってなにか喋ってください。</span><br/>
    <div v-for="(text) in texts" v-bind:key="text">
      {{ text }}
    </div>
</template>

以上で動きます。
https://github.com/yasuyoshi64/mic-test

SpeechRecognition について

SpeechRecoginitionの説明は Web Speech API に詳しい説明があります。
単純に音声をテキストに変換するだけじゃなく、読み込む単語などを限定したりもできます。
後はテキストを音声にしたりも可。でもコッチは再生できるけど音声データとして取得するには・・・どうしたらいいかわからない。

SpeechRecognitionを使えば一々テキスト入力しなくてもChatGPTが使えたりとか、なんか使えそうですね。
FireFoxが未サポートなのが残念。

コメント

このブログの人気の投稿

(真)ESP32の開発環境をVSCodeで作る

ESP32にmicroSD接続

ESP32でデバッグ