メインコンテンツへスキップ
見出し画像

Discordの"長押しして録音"機能で文字起こし ~Discord x Python~

    こんにちは、Rcatです。
    今回は以下の記事で紹介した。Discordの音声記録&アップロード機能を使って文字起こしをする方法を紹介していこうと思います。

    概要

    まずはこちらをご覧ください。
    動画が見られない方は画像の方でも大丈夫です。

    画像

    今回やるのはDiscordのアプリについている録音と送信の機能を使って文字起こしを行います。
    普段私はGboardを使用しているので、キーボード自体に音声入力がついているのですが、そうでない端末などでも利用できるように、アプリの標準搭載機能も活かしてみました。

    解説

    音声認識までの手順

    長押しして記録機能を使って音声認識を行うには次のステップを踏む必要があります。

    1. 音声データを受け取る
      送信された音声ファイルを受信するステップです

    2. データを変換する
      音声認識ライブラリが対応している形式に変換します。

    3. 音声認識を行う
      変換したデータを入力し、文字起こしを行います。
      完了後、テキストを返します。

    それぞれのステップについて見ていきましょう。

    送信された音声の扱いを確認する

    さて、アプリを使って送信した音声ですが、これどういう扱いなんでしょうか?

    画像

    調べた結果oggファイルのようです。
    確認方法としてはボットで受信したデータのファイル名をプリントしたところ、拡張子がoggでした。

    データの受け取り方

    画像

    ファイルを受け取る部分はこのような感じになっています。
    この音声に限らず画像などが添付されている場合、アタッチメントに格納されます。
    今回の場合は音声のみなので、メッセージは空白でアタッチメントが1つだけという状態です。
    というわけで、一番最初のアタッチメントの拡張子がoggだった場合、長押しして記録機能でアップロードされた音声であると判定しています。

    次に受信したデータですが、read()を使うことでバイナリデータとして読み込むことができます。基本的に高速化のため、ファイルとしては保存しないのでバイトIOを使っています。

    データ変換

    今回はpydubライブラリを使ってoggをwavに変換します。
    理由としては、この後使う文字起こしのライブラリにWAVで入力する必要があるからです。

    画像
    画像

    内容としてはこんな感じで非常に簡単です。
    このライブラリもバイトIOに対応しているので、入出力はそのままバイトIOで行います。たったの3行で変換ができるなんて素晴らしいですね。

    音声認識

    音声認識にはSpeechRecognitionライブラリを使用します。

    画像
    画像

    具体的な変換手順がこちら
    こちらもファイル入力と言いつつ、バイトIOにきちんと対応しているので、変換したらそのまま入力を行うことができます。
    そして日本語のテキストが返されるので、それをリターンするだけの関数です。
    こんな簡単に音声認識ができてしまうなんて素晴らしいですね。

    サンプルとデータの配布

    今回紹介した内容は以下のAI BOTテンプレートの中に搭載しています。
    興味のある方はこちらを参照して入手してください。


     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ