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 Slide

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

    View Slide

  3. OpenAI社の
    「Whisper API」の話

    View 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 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

  13. ライブデモ

    View Slide

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

    View Slide

  15. 今度は「Node.js」で

    View Slide

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

    View Slide

  17. ちょっと修正が必要

    View Slide

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

    View Slide

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

    View Slide

  20. ライブデモ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  43. 少し補足

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  49. ライブデモ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

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

    View Slide

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

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

    View Slide

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

    View Slide

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

    View Slide

  58. その他の
    様々な活用

    View Slide

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

    View Slide

  60. 終わり!

    View Slide