🦔

【入門者向け】Colaboratoryを使ってWhisperを使いたい

2022/10/16に公開

概要

何がしたい人向けか

以下の操作を取得できると

  • 好きなYoutubeの実況や解説を文書化することができるようになる
  • また、zoomなどのMTGの録画も文字起こしすることが容易になる
  • 音声が文字情報化されることで、"検索"や"情報整理"が容易になる。
  • 特にプライベートな動画や音声を文字化したい際に、これが動かせるようになると安心

大枠の手続き

  • 事前準備
    • 誰が実行する
      • GPU
    • 何に対して
      • 音声ファイル
        • ありかを示すことができるように
          • google drive内(家の鍵を渡して部屋にあるファイルを指定する感じ)
          • fileをupload(直接ファイルを渡す感じ)
  • コマンドを実行するときに指定
    • 何をするか
      • Whisper(speech to text)
    • どのように
      • スピード重視 -> small
      • 結果の保存先フォルダ名 -> result
      • 抽出するテキストの言語 -> 日本語

チェックリスト

後で何がわかっているか・わかっていないかを確認する

  • ファイル -> google driveにコピーを実行して、この実行ファイルを全体をコピーすることができる
  • 環境設定でGPUを選択することができる
  • コードを実行することができる
  • コメントアウトを消したり、つけたりすることができる
  • ファイルをアップロードすることができる
  • google driveのマウントを実行して、自分のマイドライブに接続することができる
  • テキスト化したいファイルのパスをコピーすることができる
  • 指定するファイル形式によって、実行するコマンドが異なることを理解している
  • コピーしたファイルのパスを、実行するコマンドの中で、適切な箇所に置換することができる
  • whisperコマンドを実行することができる
  • whisperコマンドで出力した成果物が、どのフォルダに入っているかわかる
  • whisperコマンドを、速度や精度に応じた性能を指定して、実行することができる
  • YoutubeのURLをコピーして、ダウンロードすることができる
  • ファイル名を変更することができる
  • 動画ファイルを音声ファイルに変換することができる
  • 指定したファイルの中身を確認することができる
  • whisperコマンドで出力した成果物を、ダウンロードすることができる

基礎編

  • 事前に録音済み音声ファイルを所持している前提
  • # マーク(半角なので注意)が最初にあるコード部分は、実行されないようになっている(コメントアウト)
    • ctrl + / でカーソルのあるコードをコメントアウトしたり、コメントアウトを解除したり可能
  • ! マークが最初にあるコード部分は、Linuxコマンドを実行していると思ってもらってOK

1 環境設定

colaboratory URL

以下のノートブックをコピーしてもらうと、よきです。

ソフトウェアを動かすための準備

  • Runtime -> Change runtime time -> Hardware acceleratorでGPUを指定
    • これをしないと、とんでもないほど時間がかかる
  • 実行の方法
    • shit + enter か
    • 再生マークをクリック
# パッケージのインストール
!pip install git+https://github.com/openai/whisper.git
!sudo apt update
!sudo apt install ffmpeg

2 対象ファイルを参照できるようにする

2-1 ドライブのマウント

  • google driveに保存しているファイルを参照する場合のみ実行
from google.colab import drive
drive.mount('/content/drive')

2-2 ローカルファイルからアップロード

  1. 左のファイルマーク{x}の下をクリック
  2. ファイルのアップロード(目玉マークが並ぶ行の、いちばん左)

3 音声ファイルのパスをもってくる

上記(2)に対応する、いずれかのパターンで、対象ファイルのパスを取得

  • アップロードしたファイルパス
    • ex: /content/upload_file.mp3
  • ドライブをマウントして、参照できるようになったファイルパス
    • ex: /content/drive/MyDrive/AudioData/sample.mp3

4 Whisperを実行(speech to text)

  • 下記の"path to audio file"の部分に、上記で取得したパスを置換
  • 性能と速度のトレードオフ
    • tiny, base, small, medium, largeの順番で性能が高くなり、速度が遅くなる
%%time
# スピード重視なら small, 精度重視なら large
!whisper "path to audio file" --model large --language Japanese -o result #resultというフォルダに保存しますよ

### 例1 アップロードした upload_file.mp3 を指定した場合 ###
# !whisper "upload_file.mp3" --model large --language Japanese -o result

### 例2  google driveの マイドライブ直下にある tmp_audio.mp3 を指定した場合 ###
# !whisper "/content/drive/MyDrive/AudioData/sample.mp3" --model large --language Japanese -o result

5 ダウンロード

  • 生成した出力結果が含まれているフォルダにカーソルを合わせると現れる右横にある三つの点から、ダウンロードを選択

発展編

Youtubeから動画をダウンロードして、その字幕をwhisperで作成しよう

7 Youtube動画のダウンロード

# youtubeから指定したURLの動画をダウンロードするためのソフトをインストール
!pip install yt-dlp
### 例 クリプト・仮想通貨 初心者講座 安全対策をダウンロード
!yt-dlp -f best https://www.youtube.com/watch?v=Uy0LtmWg8lo

### template
# !yt-dlp -f best "URL of youtube video"

8 動画から音声を抽出

  • 動画からのテキスト化をする場合は、音声を抽出する必要がある
  • 抽出する音声のファイル形式が指定する形式によって、実行するコマンドが異なる
    • aacファイル形式にする場合(おすすめ)
    • mp3ファイル形式にする場合
  • 動画ファイルのパスをコピーして置換
  • 実行するコード以外がコメントアウトされている状態になっていること
# ダウンロードしたファイル名前のまま、パスをコピーして貼り付けだとうまくいかないときもあるので
# file_path = "/content/クリプト・仮想通貨 初心者講座 安全対策 [Uy0LtmWg8lo].mp4"

# ダウンロードしたファイルを、名前の変更(rename)しましょう
## 左のファイルから3つの点を押して、名前の変更もしくはrenameをクリック

# これは、ダウンロードしたファイルの名前を youtube.mp4にした場合
file_path = "youtube.mp4"
# file_path変数に格納された情報を参照する方法もある
# !ffmpeg -i $file_path -vn -acodec copy "youtube_audio.aac"

### aacファイルのほうならこっち
!ffmpeg -i "youtube.mp4" -vn -acodec copy "youtube_audio.aac"

### mp3ファイルにしたい時はこっち
# !ffmpeg -i "youtube.mp4" -acodec libmp3lame -ab 256k "youtube_audio.mp3"

9 音声のテキスト化

  • スピード重視なら small, 精度重視なら large
## aacファイルの場合
!whisper "youtube_audio.aac" --model small --language Japanese -o result

## mp3ファイルの場合
# !whisper "youtube_audio.mp3" --model small --language Japanese -o result

10 出力したファイルの中身を確認

  • headコマンドで、指定したファイルの冒頭10行を表示
!head /content/result/youtube_audio.aac.srt
1
00:00:00,000 --> 00:00:14,000
はい 始まりました クリプト仮想通貨初心書講座 第1回安全対策ということで

2
00:00:14,000 --> 00:00:20,000
最近ね クリプトのハッキング事件 これものすごく増えてます

3
00:00:20,000 --> 00:00:24,000
!head /content/result/youtube_audio.aac.txt
はい 始まりました クリプト仮想通貨初心書講座 第1回安全対策ということで
最近ね クリプトのハッキング事件 これものすごく増えてます
毎週のようにね ハッキング 何々ハッキングということで
本当に安全なクリプトやる上で 今日はその重要なポイントを説明していきたいと思います
初心者の方も必見です はい もう早速やります
まず ウォレット こちらは仮想通貨を保存する財布ですで
これを作るときに シードフレーズってものを作成します
このシードフレーズ 普通は1個のウォレットを作成するときに1つなんですけど
最低でも3つ用意しましょう 3つというのは3つ別々のウォレットを作っておくということが大事です
用途別に用意するのがいいでしょう ゲームNFT用ですね そしてデファイ運用用
!head /content/result/youtube_audio.aac.vtt
WEBVTT

00:00.000 --> 00:14.000
はい 始まりました クリプト仮想通貨初心書講座 第1回安全対策ということで

00:14.000 --> 00:20.000
最近ね クリプトのハッキング事件 これものすごく増えてます

00:20.000 --> 00:24.000
毎週のようにね ハッキング 何々ハッキングということで

Discussion