Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (ALGYAN)

OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (ALGYAN)

you(@youtoy)

May 20, 2023
Tweet

More Decks by you(@youtoy)

Other Decks in Technology

Transcript

  1. 2023年5月20日 (土)
    ChatGPT研究会 第7弾 @オンライン
    豊田陽介( )
    @youtoy
    OpenAI社のWhisper APIを
    使ってみた!

    View full-size slide

  2. 自己紹介
    豊田陽介( )
    @youtoy
    ・IT系イベント主催、登壇や運営なども
    ・共著・単著の本を出していたり
    ・ Microsoft MVP(2021/10 から)
    プライベートでの活動
    ・ガジェット大好き
    ・ChatGPTは昨年の12月2日から利用開始
    ※ アドベントカレンダーで、12月2日
      やその他の日で ChatGPTネタの
      記事を書いたりも
    好きなこと、他

    View full-size slide

  3. OpenAI社の
    「Whisper API」の話

    View full-size slide

  4. 「Whisper API」の概要説明(公式)
    https://openai.com/blog/introducing-chatgpt-and-whisper-apis より
    ▼「Whisper」は 2022年9月に
      オープンソース化された
     「Speech to Textモデル」
    ▼「Whisper API」は API経由で
     それを利用可能(※ large-v2
     モデル)
    ▼ API の料金は「$0.006/分」

    View full-size slide

  5. 「Whisper API」の概要説明(公式)
    https://openai.com/blog/introducing-chatgpt-and-whisper-apis より
    ▼「Whisper」は 2022年9月に
      オープンソース化された
     「Speech to Textモデル」
    ▼「Whisper API」は API経由で
     それを利用可能(※ large-v2
     モデル)
    ▼ API の料金は「$0.006/分」

    View full-size slide

  6. 「Whisper API」の概要説明(公式)
    https://openai.com/blog/introducing-chatgpt-and-whisper-apis より
    ▼ API でできること
    ・いろいろな言語の書き起こし
    ・書き起こし+英語への翻訳
    ▼ 対応フォーマット
     ⇒ m4a, mp3, mp4, mpeg,
       mpga, wav, webm

    View full-size slide

  7. 現在ベータ版(2023年5月20日時点)
    https://platform.openai.com/docs/guides/speech-to-text

    View full-size slide

  8. とりあえず日本語音声で
    「Whisper API」を試す

    View full-size slide

  9. Whisper API の使う方法
    https://openai.com/blog/introducing-chatgpt-and-whisper-apis より
    Python
    curl

    View full-size slide

  10. オプションの1つ:言語指定
    言語指定をすることで
    「精度と遅延」が改善される

    View full-size slide

  11. curlを使って実際に試してみる
    ■手順
     1)処理対象の音声ファイルの内容を確認
     2)curlコマンドで API を利用してみる
      ※ APIキーは環境変数「$OPENAI_API_KEY」に設定

    View full-size slide

  12. curlを使って実際に試してみる
    ■手順
     1)処理対象の音声ファイルの内容を確認
     2)curlコマンドで API を利用してみる
      ※ APIキーは環境変数「$OPENAI_API_KEY」で設定
    curl https://api.openai.com/v1/audio/transcriptions \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -H "Content-Type: multipart/form-data" \
    -F model="whisper-1" \
    -F file="@【ファイルのパス+ファイル名】" \
    -F language="ja"
    言語指定:
    「ja」

    View full-size slide

  13. ライブデモ

    View full-size slide

  14. ちょっとした処理なら
    簡単に実行できてしまう

    View full-size slide

  15. 今度は「Node.js」で

    View full-size slide

  16. Whisper API の使う方法
    https://platform.openai.com/docs/api-reference/audio/create?lang=node より
    Node.js

    View full-size slide

  17. ちょっと修正が必要

    View full-size slide

  18. Node.jsからAPIを使う
    ※ APIキーは環境変数「$OPENAI_API_KEY」で設定

    View full-size slide

  19. Node.jsでの
    処理結果を確認

    View full-size slide

  20. ライブデモ

    View full-size slide

  21. 音声データに関する注意
    25MBまで
    PyDub を使った対応例
    (部分的な取り出し)
    ■ファイルサイズの制限

    View full-size slide

  22. 少し余談:
    先ほど使った音声ファイルは?

    View full-size slide

  23. Mozillaが公開しているデータセット
    ■Common Voice 
     https://commonvoice.mozilla.org/ja

    View full-size slide

  24. オープンなデータセットのクラウドソーシング

    View full-size slide

  25. 日本語の音声データもある
    今回は「Common Voice Delta Segment 13.0」を利用
    試したもの

    View full-size slide

  26. ダウンロードしたデータの中身
    たくさんの
    mp3ファイル
    音声ファイルに
    関する情報のリスト

    View full-size slide

  27. テスト用のファイルを
    手軽にゲットできる!

    View full-size slide

  28. ここで
    「API」ではないほうの話

    View full-size slide

  29. オープンソース化されていた
    「Whisper」

    View full-size slide

  30. 「Whisper」のオープンソース化とAPI
    ■ 提供開始は以下
      ※ 以下の年月日は、OpenAIの公式記事のタイムスタンプベース
     ● 2022年9月21日: オープンソース化
      ⇒ https://github.com/openai/whisper にて
     ● 2023年3月1日: Whisper API の一般公開
      ※ ChatGPT API の一般公開と同時

    View full-size slide

  31. モデルデータや対応言語
    ・・・
    複数のモデルがある
    (ファイルサイズ、精度、
     処理速度などの違いあり) 様々な言語に対応
    (グラフは精度に
     関する内容)

    View full-size slide

  32. このあたりを読んでみると良さそう
    https://qiita.com/diesekiefer/items/00d8c1507829b58a62ab
    日本語で概要が
    説明されている記事

    View full-size slide

  33. 活用の幅を拡げるために

    View full-size slide

  34. 長時間の音声ファイルの
    書き起こしへの対応

    View full-size slide

  35. 【再掲】音声データに関する注意
    25MBまで
    ■ファイルサイズの制限

    View full-size slide

  36. 25MBより大きい
    ファイルを扱う場合

    View full-size slide

  37. 対応方法の例
    ■ ファイルサイズを小さくする
     ● ファイルを分割する
     ● ファイルの圧縮をする/圧縮率を上げる
       ※ 場合によっては、精度に影響する可能性が?

    View full-size slide

  38. OpenAIのドキュメントに書かれている例
    PyDub で冒頭10分を
    取り出す処理

    View full-size slide

  39. Pydubについて
    Python で音声ファイル
    を処理できる

    View full-size slide

  40. (Whisper API自体の話では
     ない方向になりますが...)

    View full-size slide

  41. 黒い画面が
    苦手でなければ

    View full-size slide

  42. ffmpegを使って特定の部分の取り出し
    ■コマンドの例:
     切り出しの始点と終点を指定
    ffmpeg -ss 【開始部分(秒数指定)】 -to 【終了部分(hh:mm:ss
    など)】 -i 【入力ファイル名】 -c copy 【出力ファイル名】

    View full-size slide

  43. 少し補足

    View full-size slide

  44. ffmpegについて
    https://ffmpeg.org/
    クロスプラットフォームで
    様々な種類の映像・音声
    ファイル等の処理が可能

    View full-size slide

  45. ファイル分割の処理も
    コマンド1つで

    View full-size slide

  46. ffmpegを使ってファイル分割
    ■コマンドの例:
     特定の時間の長さ毎に分割する
    ffmpeg -i 【入力ファイル】 -f segment -segment_time 【時間】
    -c copy -reset_timestamps 1 【出力ファイル名】
    ※ 出力ファイルでの連番の指定例: output_%03d.m4a

    View full-size slide

  47. ちょうどよい
    区切りを見つける

    View full-size slide

  48. ■コマンドの例:
     無音区間を見つける
    ffmpeg -i 【入力ファイル(音声)】 -af silencedetect=n=【許容する
    ノイズのレベル】:d=【検出する区間の長さの閾値】 -vn -f null -
    再びffmpegを使った例

    View full-size slide

  49. ライブデモ

    View full-size slide

  50. ■ silencedetect=n=0.001:d=1.0
    ■ silencedetect=n=0.001:d=1.5
    ffmpegの「silencedetect」の出力例

    View full-size slide

  51. ■ silencedetect=n=0.001:d=0.5
    ffmpegの「silencedetect」の出力例

    View full-size slide

  52. 他のツールなどを使った例を探す
    ■ 関連するキーワード
     ・ Voice Activity Detection
     ・ 音声区間検出
     ・ 発話区間検出
     ・ Silence detection
     ・ 無音区間検出

    View full-size slide

  53. 探してみると
    GUIツールを使う方法も

    View full-size slide

  54. ちょうどよい区切りを
    見つける

    ファイルサイズも考慮して分割

    View full-size slide

  55. Pydubを使った事例
    ■【Google Colab】音声ファイルを無音区間で
      25MB以下に分割する | agusblog
      https://agusblog.net/colab-file-split/
    無音区間を検出して区切りとする

    指定サイズを超えないようにファイル結合

    View full-size slide

  56. 動画ファイルから
    音声ファイルを抽出

    View full-size slide

  57. ■コマンドの例:
     動画ファイルから音声をファイルで抽出
    ffmpeg -i 【入力ファイル(動画)】 -vn -acodec copy 【出力ファイル
    (音声)】
    ffmpegを使った例

    View full-size slide

  58. その他の
    様々な活用

    View full-size slide

  59. ・リアルタイムな入力に対する音声認識
    ・話者判別の仕組みとの組み合わせ
    ・認識結果をChatGPTで要約
    様々なことを試された事例(一部のみ)
    Whisper API
    活用していきましょう!

    View full-size slide

  60. 終わり!

    View full-size slide