はじめに
俺を、見ろ!!1 nikkieです。
英語で3分のピッチをするにあたり、どのように準備したかのログを残します。
生成AIに大変助けられました。みんな みんな 未来だよ2📣
目次
英語ピッチの準備をする
以下の2つを準備する必要がありました。
- 英語の発表スライド
- 英語のスピーカーノート
私は英語だけで考えられるほど習熟していないので、最初は日本語で作っていきます。
つまり日本語で作ったスライドを英語に翻訳し、英語のスピーカーノートも用意する必要があります。
作戦:日本語の発表練習録音を書き起こして、英語のスピーカーノートにしよう!
私は発表スライドを作った後に1回は練習するようにしており、その練習は録音します3
今回は日本語スライドの時点で粗削りの発表を録音し、それを英語にして、英語スピーカーノートとしました。
- 日本語の録音を書き起こして日本語のスピーカーノートを作る
- 日本語のスピーカーノートを英語に翻訳する
また英語スピーカーノートを参考に、日本語と対応を見ながらキーワードを抽出する形でスライドを英訳しました(ここは今回人力でした)。
録音の書き起こし
iPhoneのボイスメモアプリ
録音はボイスメモアプリ内に保存されるようです。
練習の日本語録音のメニュー(3点リーダー)を操作し"ファイル"に保存。
方法②ファイルアプリで共有する
今回は録音(のコピー)をファイルアプリでiCloud Driveに保存し、スマホとPCで同期させました(他にもやり方はあると思います)
OpenAI Whisper API
ボイスメモアプリで録音したファイルは.m4a
という拡張子でした。
OpenAI Whisperはm4a
もサポートしている4ので、Quickstartに沿ってリクエストを送るだけです5。
https://platform.openai.com/docs/guides/speech-to-text/transcriptions
>>> from openai import OpenAI >>> client = OpenAI() >>> audio_file = open("/...iCloud Drive.../日本語練習録音.m4a", "rb") >>> transcript = client.audio.transcriptions.create(model="whisper-1", file=audio_file)
3分の日本語の音声を送ったところ、そんなに待たずに書き起こしが返ってきました(計測してないですが、30秒も待ってないんじゃないかな)。
transcript.text
に書き起こしがあります
英語スピーカーノートのもとになるので読み返して手を入れていきましたが、全然直すところはなかったです。
自分の言い回しをブラッシュアップしていく感じでした。
例えば、sphinx-new-tab-linkって語をWhisperは初めて聞いたと思うんですが、「スフィンクスニュータブリンク」と書き起こせているんですよ! すごすぎる
送ったのはリクエスト1回だけで、費用は0.02ドルみたいでした(投資に対して十分ペイしている)
動作環境(openaiは1.2.3です)
annotated-types==0.6.0 anyio==3.7.1 certifi==2023.7.22 distro==1.8.0 h11==0.14.0 httpcore==1.0.2 httpx==0.25.1 idna==3.4 openai==1.2.3 pydantic==2.4.2 pydantic_core==2.10.1 sniffio==1.3.0 tqdm==4.66.1 typing_extensions==4.8.0
宿題:transformersのWhisper
最初はtransformersのWhisperも試したのですが、音声ファイルの最初しか翻訳できず、今回はそこで手を止めました。
- m4aからwavにffmpegで変換
- ref: https://github.com/openai/whisper/discussions/41#discussioncomment-3713140
- transformersのWhisperはm4a形式のままだと扱えないみたい
- このwavは3分あり、再生できます(変換には問題なさそう)
- wavファイルをautomatic-speech-recognition pipelineに渡すと、最初の一文しか書き起こされなかった
- 私の実装が足りないんだと思うのですが、すぐに解決できそうになかったのでWhisper APIに切り替えました
transcriber = pipeline( "automatic-speech-recognition", model="openai/whisper-medium" ) forced_decoder_ids = transcriber.tokenizer.get_decoder_prompt_ids( language="japanese", task="transcribe" ) print( transcriber( "recording.wav", generate_kwargs={"forced_decoder_ids": forced_decoder_ids}, ) ) # {'text': 'それではプレゼンしていきます'}
日本語から英語への翻訳
PyCon APACでGPT-4にお世話になったのと同様です!
こんなプロンプトでした
私が自作したSphinx拡張についてPythonユーザに英語で発表します。 日本語のスピーカーノートを英語に翻訳するのを手伝ってください。 聴衆に自作Sphinx拡張を知ってもらいたいです。 また、カジュアルなトーンでいきたいです。
終わりに
日本語の発表練習録音から英語のスピーカーノートを作るにあたり、OpenAIのWhisper APIとGPT-4を使いました。
Whisper APIとGPT-4が英語ピッチ準備を爆速にしてくれました。
十分に発達した科学技術は、魔法と見分けがつかない。(アーサー・C・クラーク)
ただ、もっと魔法になる、未来になる(=便利になる)と思うんですよね。
最初GPT-4にスマホアプリから録音ファイルをアップロードして「これを書き起こして」と伝えています。
するとGPT-4はCode Interpreterで書き起こそうとし、外部APIとの通信が必要でしたができなかったので「できません」とのことでした。
MyGPTsのActionを触った経験6から、Whisper APIをActionに追加してGPT-4がそれを使って書き起こしを得られそうに思います。
OpenAIが近々アップデートしてぶつけてくるんじゃないでしょうか。
なので、ここに書いた内容は少し時間が経ったら、もはや再現する必要すらなくなっているかもしれませんね