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弾 (ALGYAN)
Search
you(@youtoy)
PRO
May 20, 2023
Technology
0
990
OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (ALGYAN)
you(@youtoy)
PRO
May 20, 2023
Tweet
Share
More Decks by you(@youtoy)
See All by you(@youtoy)
WebHID API で Joy-Con・DUALSHOCK 4 のセンサーをブラウザから利用する / IoTLT vol.109
you
PRO
0
110
UIFlow 2.0 で MQTT をやってみた! / IoTLT vol.108
you
PRO
0
1.6k
UIFlow 2.0 と ATOMS3 の組み合わせで LINE通知を試す / ビジュアルプログラミングIoTLT vol.16
you
PRO
0
160
技術コミュニティの中での生成AI(自身の観測範囲での事例について) / 23 Xmas Talk / 20231209
you
PRO
0
1.4k
AI・機械学習ライブラリを使ったWebアプリでワクワク体験! / Qiita Night~AI、機械学習 / 20231201
you
PRO
2
2.1k
p5.js・p5playを使った体験イベントに参加した子達が手を動かすこと・考えることを楽しんでくれた話 / p5.js勉強会(第九回) / 20231126
you
PRO
0
53
LINEでのコミュニケーションにマスコットキーホルダーを使ってみる / LINEを使ったLT大会 #5
you
PRO
0
2.3k
イベントで大活躍の電子ペーパー名札 〜M5PaperとUIFlow+α〜 / #ヒーローズリーグ 2023 予選 in 第二部
you
PRO
0
94
ハッカソンでWebの技術を使った作品を作ってみた 〜ブラウザで機械学習やデバイス制御など〜 / HTML5 9th Anniversary
you
PRO
0
110
Other Decks in Technology
See All in Technology
MapLibreとAmazon Location Service
dayjournal
1
140
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
850
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
220
On Your Data を超えていく!
hirotomotaguchi
2
620
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
2
810
私が trocco を推す理由
__allllllllez__
1
190
生産性向上チームの紹介
cybozuinsideout
PRO
1
840
〜小さく始めて大きく育てる〜データ分析基盤の開発から活用まで
kniino
0
2.1k
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
150
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
210
Tableau事例紹介 / Tableau Case Study of Eureka
kazuya_araki_tokyo
1
180
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
120
Featured
See All Featured
Ruby is Unlike a Banana
tanoku
96
10k
BBQ
matthewcrist
80
8.8k
Statistics for Hackers
jakevdp
789
220k
Web development in the modern age
philhawksworth
202
10k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Facilitating Awesome Meetings
lara
41
5.6k
The Language of Interfaces
destraynor
151
23k
How STYLIGHT went responsive
nonsquared
92
4.8k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
321
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Imperfection Machines: The Place of Print at Facebook
scottboms
259
12k
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 活用していきましょう!
終わり!