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.4k
OpenAI社のWhisper APIを使ってみた! / ChatGPT研究会 第7弾 (ALGYAN)
you(@youtoy)
PRO
May 20, 2023
Tweet
Share
More Decks by you(@youtoy)
See All by you(@youtoy)
ブラウザで CircuitPython の開発:公式の「CircuitPython Code Editor」を試した / 【屋形船開催】IoT縛りの勉強会! IoTLT vol.126 @東京湾
you
PRO
0
100
公開初日に個人環境で試した Gemini CLI 体験記など / Gemini CLI実験レポート
you
PRO
3
2.4k
Webの技術とガジェットで那須の子ども達にワクワクを! / IoTLT_20250720
you
PRO
0
140
公開初日に Gemini CLI を試した話や FFmpeg と組み合わせてみた話など / Gemini CLI 初学者勉強会(#AI道場)
you
PRO
0
2.4k
Node-REDのFunctionノードでMCPサーバーの実装を試してみた / Node-RED × MCP 勉強会 vol.1
you
PRO
0
160
総額200円の入力インターフェースで年齢問わず楽しめる体験型展示 / エンジニアの自由研究発表会vol.10
you
PRO
0
290
Node−RED で Ollama を使ったローカルLLM(node-red-contrib-ollamaを利用) / ビジュアルプログラミングIoTLT vol.20
you
PRO
0
230
AIエージェント開発や最新の生成AIのAPI利用などJavaScriptで色々やってみる / IoTLT vol.123
you
PRO
0
130
ChatGPT からモックサーバー宛(Beeceptor宛)の HTTPリクエストを試す / IoTLT 202504
you
PRO
0
120
Other Decks in Technology
See All in Technology
実践AIガバナンス
asei
3
270
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
420
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
25
12k
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
2
1.5k
Grafana Meetup Japan Vol. 6
kaedemalu
1
190
【 LLMエンジニアがヒューマノイド開発に挑んでみた 】 - 第104回 Machine Learning 15minutes! Hybrid
soneo1127
0
230
生成AI時代のデータ基盤
shibuiwilliam
1
1.4k
個人CLAUDE.md紹介と設定から学んだこと/introduce-my-claude-md
shibayu36
0
140
つくって納得、つかって実感! 大規模言語モデルことはじめ
recruitengineers
PRO
32
12k
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
100
スプリントレトロスペクティブはチーム観察の宝庫? 〜チームの衝突レベルに合わせたアプローチ仮説!〜
electricsatie
1
140
シークレット管理だけじゃない!HashiCorp Vault でデータ暗号化をしよう / Beyond Secret Management! Let's Encrypt Data with HashiCorp Vault
nnstt1
2
130
Featured
See All Featured
Music & Morning Musume
bryan
46
6.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
How GitHub (no longer) Works
holman
315
140k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Six Lessons from altMBA
skipperchong
28
4k
Writing Fast Ruby
sferik
628
62k
4 Signs Your Business is Dying
shpigford
184
22k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Code Review Best Practice
trishagee
70
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
The Language of Interfaces
destraynor
160
25k
Balancing Empowerment & Direction
lara
3
600
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 活用していきましょう!
終わり!