OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (ALGYAN)
by
you(@youtoy)
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2023年5月20日 (土) ChatGPT研究会 第7弾 @オンライン 豊田陽介( ) @youtoy OpenAI社のWhisper APIを 使ってみた!
Slide 2
Slide 2 text
自己紹介 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・共著・単著の本を出していたり ・ Microsoft MVP(2021/10 から) プライベートでの活動 ・ガジェット大好き ・ChatGPTは昨年の12月2日から利用開始 ※ アドベントカレンダーで、12月2日 やその他の日で ChatGPTネタの 記事を書いたりも 好きなこと、他
Slide 3
Slide 3 text
OpenAI社の 「Whisper API」の話
Slide 4
Slide 4 text
「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/分」
Slide 5
Slide 5 text
「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/分」
Slide 6
Slide 6 text
「Whisper API」の概要説明(公式) https://openai.com/blog/introducing-chatgpt-and-whisper-apis より ▼ API でできること ・いろいろな言語の書き起こし ・書き起こし+英語への翻訳 ▼ 対応フォーマット ⇒ m4a, mp3, mp4, mpeg, mpga, wav, webm
Slide 7
Slide 7 text
現在ベータ版(2023年5月20日時点) https://platform.openai.com/docs/guides/speech-to-text
Slide 8
Slide 8 text
とりあえず日本語音声で 「Whisper API」を試す
Slide 9
Slide 9 text
Whisper API の使う方法 https://openai.com/blog/introducing-chatgpt-and-whisper-apis より Python curl
Slide 10
Slide 10 text
オプションの1つ:言語指定 言語指定をすることで 「精度と遅延」が改善される
Slide 11
Slide 11 text
curlを使って実際に試してみる ■手順 1)処理対象の音声ファイルの内容を確認 2)curlコマンドで API を利用してみる ※ APIキーは環境変数「$OPENAI_API_KEY」に設定
Slide 12
Slide 12 text
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」
Slide 13
Slide 13 text
ライブデモ
Slide 14
Slide 14 text
ちょっとした処理なら 簡単に実行できてしまう
Slide 15
Slide 15 text
今度は「Node.js」で
Slide 16
Slide 16 text
Whisper API の使う方法 https://platform.openai.com/docs/api-reference/audio/create?lang=node より Node.js
Slide 17
Slide 17 text
ちょっと修正が必要
Slide 18
Slide 18 text
Node.jsからAPIを使う ※ APIキーは環境変数「$OPENAI_API_KEY」で設定
Slide 19
Slide 19 text
Node.jsでの 処理結果を確認
Slide 20
Slide 20 text
ライブデモ
Slide 21
Slide 21 text
音声データに関する注意 25MBまで PyDub を使った対応例 (部分的な取り出し) ■ファイルサイズの制限
Slide 22
Slide 22 text
少し余談: 先ほど使った音声ファイルは?
Slide 23
Slide 23 text
Mozillaが公開しているデータセット ■Common Voice https://commonvoice.mozilla.org/ja
Slide 24
Slide 24 text
オープンなデータセットのクラウドソーシング
Slide 25
Slide 25 text
日本語の音声データもある 今回は「Common Voice Delta Segment 13.0」を利用 試したもの
Slide 26
Slide 26 text
ダウンロードしたデータの中身 たくさんの mp3ファイル 音声ファイルに 関する情報のリスト
Slide 27
Slide 27 text
テスト用のファイルを 手軽にゲットできる!
Slide 28
Slide 28 text
ここで 「API」ではないほうの話
Slide 29
Slide 29 text
オープンソース化されていた 「Whisper」
Slide 30
Slide 30 text
「Whisper」のオープンソース化とAPI ■ 提供開始は以下 ※ 以下の年月日は、OpenAIの公式記事のタイムスタンプベース ● 2022年9月21日: オープンソース化 ⇒ https://github.com/openai/whisper にて ● 2023年3月1日: Whisper API の一般公開 ※ ChatGPT API の一般公開と同時
Slide 31
Slide 31 text
モデルデータや対応言語 ・・・ 複数のモデルがある (ファイルサイズ、精度、 処理速度などの違いあり) 様々な言語に対応 (グラフは精度に 関する内容)
Slide 32
Slide 32 text
このあたりを読んでみると良さそう https://qiita.com/diesekiefer/items/00d8c1507829b58a62ab 日本語で概要が 説明されている記事
Slide 33
Slide 33 text
活用の幅を拡げるために
Slide 34
Slide 34 text
長時間の音声ファイルの 書き起こしへの対応
Slide 35
Slide 35 text
【再掲】音声データに関する注意 25MBまで ■ファイルサイズの制限
Slide 36
Slide 36 text
25MBより大きい ファイルを扱う場合
Slide 37
Slide 37 text
対応方法の例 ■ ファイルサイズを小さくする ● ファイルを分割する ● ファイルの圧縮をする/圧縮率を上げる ※ 場合によっては、精度に影響する可能性が?
Slide 38
Slide 38 text
OpenAIのドキュメントに書かれている例 PyDub で冒頭10分を 取り出す処理
Slide 39
Slide 39 text
Pydubについて Python で音声ファイル を処理できる
Slide 40
Slide 40 text
(Whisper API自体の話では ない方向になりますが...)
Slide 41
Slide 41 text
黒い画面が 苦手でなければ
Slide 42
Slide 42 text
ffmpegを使って特定の部分の取り出し ■コマンドの例: 切り出しの始点と終点を指定 ffmpeg -ss 【開始部分(秒数指定)】 -to 【終了部分(hh:mm:ss など)】 -i 【入力ファイル名】 -c copy 【出力ファイル名】
Slide 43
Slide 43 text
少し補足
Slide 44
Slide 44 text
ffmpegについて https://ffmpeg.org/ クロスプラットフォームで 様々な種類の映像・音声 ファイル等の処理が可能
Slide 45
Slide 45 text
ファイル分割の処理も コマンド1つで
Slide 46
Slide 46 text
ffmpegを使ってファイル分割 ■コマンドの例: 特定の時間の長さ毎に分割する ffmpeg -i 【入力ファイル】 -f segment -segment_time 【時間】 -c copy -reset_timestamps 1 【出力ファイル名】 ※ 出力ファイルでの連番の指定例: output_%03d.m4a
Slide 47
Slide 47 text
ちょうどよい 区切りを見つける
Slide 48
Slide 48 text
■コマンドの例: 無音区間を見つける ffmpeg -i 【入力ファイル(音声)】 -af silencedetect=n=【許容する ノイズのレベル】:d=【検出する区間の長さの閾値】 -vn -f null - 再びffmpegを使った例
Slide 49
Slide 49 text
ライブデモ
Slide 50
Slide 50 text
■ silencedetect=n=0.001:d=1.0 ■ silencedetect=n=0.001:d=1.5 ffmpegの「silencedetect」の出力例
Slide 51
Slide 51 text
■ silencedetect=n=0.001:d=0.5 ffmpegの「silencedetect」の出力例
Slide 52
Slide 52 text
他のツールなどを使った例を探す ■ 関連するキーワード ・ Voice Activity Detection ・ 音声区間検出 ・ 発話区間検出 ・ Silence detection ・ 無音区間検出
Slide 53
Slide 53 text
探してみると GUIツールを使う方法も
Slide 54
Slide 54 text
ちょうどよい区切りを 見つける + ファイルサイズも考慮して分割
Slide 55
Slide 55 text
Pydubを使った事例 ■【Google Colab】音声ファイルを無音区間で 25MB以下に分割する | agusblog https://agusblog.net/colab-file-split/ 無音区間を検出して区切りとする + 指定サイズを超えないようにファイル結合
Slide 56
Slide 56 text
動画ファイルから 音声ファイルを抽出
Slide 57
Slide 57 text
■コマンドの例: 動画ファイルから音声をファイルで抽出 ffmpeg -i 【入力ファイル(動画)】 -vn -acodec copy 【出力ファイル (音声)】 ffmpegを使った例
Slide 58
Slide 58 text
その他の 様々な活用
Slide 59
Slide 59 text
・リアルタイムな入力に対する音声認識 ・話者判別の仕組みとの組み合わせ ・認識結果をChatGPTで要約 様々なことを試された事例(一部のみ) Whisper API 活用していきましょう!
Slide 60
Slide 60 text
終わり!