2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JSで音声入力【コード・解説付き】

Posted at

音声入力がしたいのだ!

なぜかずんだもん風に喋ってみました。
結構カンタンにできるので、ゆっくり解説するのだ。

_人人人人人人人人人人人_
>ゆっくりしていってね!!<
 ̄YYYYYYYYYYY ̄

インストール

ゆーてもインストールはyarn or npmでできるのだ。
今回はReact.js+Typescriptで書いていくのだ!

yarn add react-speech-recognition

tsはこちらも

yarn add @type/react-speech-recognition --dev

もし読み込み時に👇のエラーが出た場合は以下も追加すること

ReferenceError: regeneratorRuntime is not defined

コマンド

yarn add regenerator-runtime

コーディング

こんな感じで簡単にコーディングできるのだ!
※必要な箇所だけ抜き出しております。コードと画面で違う箇所がありますがそこはご愛嬌ということで

import 'regenerator-runtime'; // エラーが出た場合は最初に読み込みさせる
import SpeechRecognition, { useSpeechRecognition } from "react-speech-recognition";

const {
  transcript,
  listening,
  resetTranscript,
  browserSupportsSpeechRecognition
} = useSpeechRecognition();

const [recordingInput, setRecordingInput] = useState(''); // 出力したいテキスト領域

// 読み込み中のuseEffect。リアルタイムでテキストを出力したい時は必要
useEffect(() => {
  if (listening) setRecordingInput(transcript);
}, [transcript]);


<Button
  disabled={!browserSupportsSpeechRecognition} // ブラウザ非対応の場合はdisabledに
  label={listening ? '入力停止' : '音声入力'}
  buttonColor={listening ? 'is-danger' : 'is-primary'}
  isLight
  onClick={() => {
    if (listening) {
      SpeechRecognition.stopListening(); 
      resetTranscript(); // 入力済みのテキストをリセット
    } else {
      SpeechRecognition.startListening({
        continuous: true, //ユーザーが中断するまで音声入力を実行
      });
    }
  }}
/>

<TextArea
  onChange={(e) => {
    setRecordingInput(e.target.value); // 手直ししたい時に便利かも?
  }}
  value={recordingInput}
  placeholder="音声入力の結果がこちらに表示されます"
/>

画面表示

ボタンを押すとこんな感じで表示されるのだ!

スクリーンショット 2024-11-28 190520.png

許可を押すと音声が入力できるからしゃべってみるのだ!

スクリーンショット 2024-11-28 190845.png
※「な」と「の」の間にスペースが入ってますが、精度的にはいいカンジ!

停止したい時はボタンを押すのだ!

これを使って色々とできることが増えるので、ぜひ活用してみるのだ!


オブジェクティブグループではXの投稿も平日毎日行っています!
IT関連の小ネタや便利技から、日常のアニメ・ゲーム布教なども幅広く投稿してるので、
ご興味のある方は是非フォロー・いいねをお願いします。
https://x.com/obg_ocr


2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?