Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (AL...
Search
you(@youtoy)
PRO
May 20, 2023
Technology
0
1.2k
OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (ALGYAN)
you(@youtoy)
PRO
May 20, 2023
Tweet
Share
More Decks by you(@youtoy)
See All by you(@youtoy)
"かわいい" がテーマのハッカソンでWebの技術を使って魔法の世界を作った話など / HTML5 10th Anniversary
you
PRO
0
59
ブラウザで AI・機械学習が扱える TensorFlow.js が使われているライブラリなどの話 / #さくらのAI Meetup vol.4「ブラウザ」
you
PRO
0
130
Blynk と Raspberry Pi Pico W で IoT 〜 MQTT・HTTPリクエストの組み合わせも 〜 / IoTLT vol.114
you
PRO
0
270
AIを活用したWebアプリのプロトタイプを作ってコンテストや展示に出してみた話 / 大阪工業大学 ネットワークデザイン学科 LT大会 2024v2
you
PRO
0
65
Babylon.jsと色々なものを組み合わせる:ブラウザのAPIやガジェットや2D描画ライブラリなど / Babylon.js 勉強会 vol.3
you
PRO
0
500
WebHID API で Joy-Con・DUALSHOCK 4 のセンサーをブラウザから利用する / IoTLT vol.109
you
PRO
0
240
UIFlow 2.0 で MQTT をやってみた! / IoTLT vol.108
you
PRO
0
2.5k
UIFlow 2.0 と ATOMS3 の組み合わせで LINE通知を試す / ビジュアルプログラミングIoTLT vol.16
you
PRO
0
450
技術コミュニティの中での生成AI(自身の観測範囲での事例について) / 23 Xmas Talk / 20231209
you
PRO
0
1.5k
Other Decks in Technology
See All in Technology
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
470
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
580
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
SSMRunbook作成の勘所_20241120
koichiotomo
2
130
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
140
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
250
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Faster Mobile Websites
deanohume
305
30k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
A Tale of Four Properties
chriscoyier
156
23k
Code Reviewing Like a Champion
maltzj
520
39k
4 Signs Your Business is Dying
shpigford
180
21k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Bash Introduction
62gerente
608
210k
Why Our Code Smells
bkeepers
PRO
334
57k
Transcript
2023年5月20日 (土) ChatGPT研究会 第7弾 @オンライン 豊田陽介( ) @youtoy OpenAI社のWhisper APIを
使ってみた!
自己紹介 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・共著・単著の本を出していたり ・ Microsoft MVP(2021/10 から)
プライベートでの活動 ・ガジェット大好き ・ChatGPTは昨年の12月2日から利用開始 ※ アドベントカレンダーで、12月2日 やその他の日で ChatGPTネタの 記事を書いたりも 好きなこと、他
OpenAI社の 「Whisper API」の話
「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/分」
「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/分」
「Whisper API」の概要説明(公式) https://openai.com/blog/introducing-chatgpt-and-whisper-apis より ▼ API でできること ・いろいろな言語の書き起こし ・書き起こし+英語への翻訳 ▼
対応フォーマット ⇒ m4a, mp3, mp4, mpeg, mpga, wav, webm
現在ベータ版(2023年5月20日時点) https://platform.openai.com/docs/guides/speech-to-text
とりあえず日本語音声で 「Whisper API」を試す
Whisper API の使う方法 https://openai.com/blog/introducing-chatgpt-and-whisper-apis より Python curl
オプションの1つ:言語指定 言語指定をすることで 「精度と遅延」が改善される
curlを使って実際に試してみる ▪手順 1)処理対象の音声ファイルの内容を確認 2)curlコマンドで API を利用してみる ※ APIキーは環境変数「$OPENAI_API_KEY」に設定
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」
ライブデモ
ちょっとした処理なら 簡単に実行できてしまう
今度は「Node.js」で
Whisper API の使う方法 https://platform.openai.com/docs/api-reference/audio/create?lang=node より Node.js
ちょっと修正が必要
Node.jsからAPIを使う ※ APIキーは環境変数「$OPENAI_API_KEY」で設定
Node.jsでの 処理結果を確認
ライブデモ
音声データに関する注意 25MBまで PyDub を使った対応例 (部分的な取り出し) ▪ファイルサイズの制限
少し余談: 先ほど使った音声ファイルは?
Mozillaが公開しているデータセット ▪Common Voice https://commonvoice.mozilla.org/ja
オープンなデータセットのクラウドソーシング
日本語の音声データもある 今回は「Common Voice Delta Segment 13.0」を利用 試したもの
ダウンロードしたデータの中身 たくさんの mp3ファイル 音声ファイルに 関する情報のリスト
テスト用のファイルを 手軽にゲットできる!
ここで 「API」ではないほうの話
オープンソース化されていた 「Whisper」
「Whisper」のオープンソース化とAPI ▪ 提供開始は以下 ※ 以下の年月日は、OpenAIの公式記事のタイムスタンプベース • 2022年9月21日: オープンソース化 ⇒
https://github.com/openai/whisper にて • 2023年3月1日: Whisper API の一般公開 ※ ChatGPT API の一般公開と同時
モデルデータや対応言語 ・・・ 複数のモデルがある (ファイルサイズ、精度、 処理速度などの違いあり) 様々な言語に対応 (グラフは精度に 関する内容)
このあたりを読んでみると良さそう https://qiita.com/diesekiefer/items/00d8c1507829b58a62ab 日本語で概要が 説明されている記事
活用の幅を拡げるために
長時間の音声ファイルの 書き起こしへの対応
【再掲】音声データに関する注意 25MBまで ▪ファイルサイズの制限
25MBより大きい ファイルを扱う場合
対応方法の例 ▪ ファイルサイズを小さくする • ファイルを分割する • ファイルの圧縮をする/圧縮率を上げる ※ 場合によっては、精度に影響する可能性が?
OpenAIのドキュメントに書かれている例 PyDub で冒頭10分を 取り出す処理
Pydubについて Python で音声ファイル を処理できる
(Whisper API自体の話では ない方向になりますが...)
黒い画面が 苦手でなければ
ffmpegを使って特定の部分の取り出し ▪コマンドの例: 切り出しの始点と終点を指定 ffmpeg -ss 【開始部分(秒数指定)】 -to 【終了部分(hh:mm:ss など)】 -i
【入力ファイル名】 -c copy 【出力ファイル名】
少し補足
ffmpegについて https://ffmpeg.org/ クロスプラットフォームで 様々な種類の映像・音声 ファイル等の処理が可能
ファイル分割の処理も コマンド1つで
ffmpegを使ってファイル分割 ▪コマンドの例: 特定の時間の長さ毎に分割する ffmpeg -i 【入力ファイル】 -f segment -segment_time 【時間】
-c copy -reset_timestamps 1 【出力ファイル名】 ※ 出力ファイルでの連番の指定例: output_%03d.m4a
ちょうどよい 区切りを見つける
▪コマンドの例: 無音区間を見つける ffmpeg -i 【入力ファイル(音声)】 -af silencedetect=n=【許容する ノイズのレベル】:d=【検出する区間の長さの閾値】 -vn -f
null - 再びffmpegを使った例
ライブデモ
▪ silencedetect=n=0.001:d=1.0 ▪ silencedetect=n=0.001:d=1.5 ffmpegの「silencedetect」の出力例
▪ silencedetect=n=0.001:d=0.5 ffmpegの「silencedetect」の出力例
他のツールなどを使った例を探す ▪ 関連するキーワード ・ Voice Activity Detection ・ 音声区間検出 ・
発話区間検出 ・ Silence detection ・ 無音区間検出
探してみると GUIツールを使う方法も
ちょうどよい区切りを 見つける + ファイルサイズも考慮して分割
Pydubを使った事例 ▪【Google Colab】音声ファイルを無音区間で 25MB以下に分割する | agusblog https://agusblog.net/colab-file-split/ 無音区間を検出して区切りとする + 指定サイズを超えないようにファイル結合
動画ファイルから 音声ファイルを抽出
▪コマンドの例: 動画ファイルから音声をファイルで抽出 ffmpeg -i 【入力ファイル(動画)】 -vn -acodec copy 【出力ファイル (音声)】
ffmpegを使った例
その他の 様々な活用
・リアルタイムな入力に対する音声認識 ・話者判別の仕組みとの組み合わせ ・認識結果をChatGPTで要約 様々なことを試された事例(一部のみ) Whisper API 活用していきましょう!
終わり!