1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Reactで音声認識してChatGPTに質問する

Last updated at Posted at 2023-08-01

目次

成果物
フロントエンド(Next.js)の実装
エラーが出る場合
ローカル開発でマイクがONにできない場合

成果物

無音なのでわかりづらいが、自分の声がしっかり音声認識されている。
speechAI.gif

フロントエンドの実装

音声認識にはこちらのライブラリを使う。

import SpeechRecognition, {
    useSpeechRecognition,
} from "react-speech-recognition";

export const SpeechButton = () => {
    const [inputText, setInputText] = useState("");
    const { transcript, listening } = useSpeechRecognition();

    useEffect(() => {
        if (listening) setInputText(transcript);
    }, [transcript]);

    return (
        <>
            <button
                type="button"
                onClick={() => SpeechRecognition.startListening()}
            >
                {listening ? "認識中" : "音声入力"}
            </button>
            <button
                type="button"
                onClick={() => setInputText("")}
            >
                リセット
            </button>
            <p>{inputText}</p>
        </>
    );
}

上記コードを実装し、音声認識で入力された inputText をOpenAIのAPIに渡してあげればChatGPTに質問できる。
バックエンド側はこちらの記事参照。

エラーが出る場合

アプリを起動してReferenceエラーが出る場合は、、

  1. npm install regenerator-runtimeを実行する
  2. import "regenerator-runtime";を上記Reactコードの一番上に書いてあげる。
    image.png

ローカル開発でマイクオンにできない場合

ローカル開発だとhttps対応していないので、ブラウザのマイクがブロックされている場合がある。
こちらの記事を参考に以下を実行するとマイクオンできた。

  1. Chromeのアドレスバーにchrome://flags/#unsafely-treat-insecure-origin-as-secureを入力して検索
  2. Insecure origins treated as secureという欄にローカル開発で起動しているURLを入力してEnabledを押す
    image.png
1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?