見出し画像

経費ゼロで取材効率アップ! 最新AI活用で文字起こし作業から解放される方法

今回は、Google Colaboratory(通称Colab)とOpenAIのWhisperを使って、音声ファイルを自動で文字起こしする方法をご紹介します。以前から試していたので、コードがやっと安定して動くものが作れたので、記事として公開したいと思います。whisperは完全無料かつ、精度が高いのがポイントです。ド文系の自分でもできたので、取材記事作成などに役立てていただけたらと思います。
※無料で最後まで読めますが、もしコードを使っていただき、価値があると思っていただいたら、購入ボタンを押していただけると飛んで喜びます。

なぜ無料で使えるの?

このツールが無料で使える理由は主に2つあります:

  1. Google Colaboratoryの無料提供:Googleが機械学習や研究目的で無料で提供しているサービスを利用しています。

  2. Whisperの公開モデル:OpenAIが公開している音声認識モデルを使用しているため、追加のライセンス費用がかかりません。

ただし、大量の処理や長時間の利用には一部制限がありますので、ご注意ください。

準備するもの

  1. Googleアカウント

  2. 文字起こしをしたい音声ファイル(MP3、WAV、M4A、OGG形式)

手順

1. Google Colaboratoryを開く

  1. ブラウザでGoogle Colaboratoryにアクセスします。

  2. 「新しいノートブック」をクリックして、新しいプロジェクトを作成します。

2. ランタイムタイプを変更する

文字起こしの処理を高速化するために、GPUを使用します。以下の手順でランタイムタイプを変更しましょう。

  1. メニューバーから「ランタイム」→「ランタイムのタイプを変更」を選択します。

  2. 「ハードウェアアクセラレータ」のドロップダウンメニューから「GPU」を選択します。

  3. 「保存」をクリックします。

なぜGPUが必要なのか: GPUは並列処理に優れており、音声認識のような複雑な計算を高速に行うことができます。CPUだけを使用する場合と比べて、処理時間を大幅に短縮できます。

3. 必要なライブラリをインストール

  1. 最初のセルに以下のコードを貼り付け、実行します(セルの左側の再生ボタンをクリックするか、Shift+Enterキーを押します)。

!pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
!pip install --upgrade tqdm tiktoken
  1. インストールが完了したら、画面上部に「ランタイムを再起動する必要があります」というメッセージが表示されるので、「ランタイムを再起動」をクリックします。

4.音源アップフォルダの作成

1.新しいコードセルを作成し(+コードボタンをクリック)、以下のコードを貼り付け、実行します。

import os
from google.colab import files

def create_folders():
    """必要なフォルダを作成する"""
    for folder in ["content", "download"]:
        if not os.path.exists(folder):
            os.mkdir(folder)
            print(f"{folder}フォルダを作成しました。")

def upload_files():
    """音声ファイルをアップロードする"""
    print("音声ファイルをアップロードしてください。")
    uploaded = files.upload()
    for filename in uploaded.keys():
        os.rename(filename, f"content/{filename}")
        print(f"{filename}を contentフォルダに移動しました。")

if __name__ == "__main__":
    create_folders()
    upload_files()
    print("フォルダの作成とファイルのアップロードが完了しました。")

2.このコードを実行すると、contentフォルダとdownloadファルダが作成されます。この段階で音源をcotentフォルダにアップしましょう。downloadフォルダは文字起こしが保存される場所です。

音源のアップロード:

  • Colabの左側のファイルメニューを開きます。

  • 'content'フォルダをクリックして開きます。

  • ファイルをドラッグ&ドロップするか、アップロードボタンをクリックして音源ファイルを選択します。

5. メインのコードを入力

  1. 新しいコードセルを作成し(+コードボタンをクリック)、以下のコードを貼り付け、実行します。

import os
import whisper
from tqdm import tqdm

def select_audio_files():
    """複数の音声ファイルを選択する"""
    print("ステップ1: 音声ファイルの選択")
    content_files = [f for f in os.listdir("content") if f.lower().endswith(('.mp3', '.wav', '.m4a', '.ogg'))]
    
    if not content_files:
        print("contentフォルダに適切な音声ファイルがありません。")
        return []
    
    print("処理可能な音声ファイル:")
    for i, file in enumerate(content_files, 1):
        print(f"{i}) {file}")
    
    while True:
        choice = input("\n処理するファイルの番号を入力してください(複数の場合はカンマ区切り、全て選択する場合は'all'): ")
        if choice.lower() == 'all':
            return content_files
        try:
            indices = [int(x.strip()) - 1 for x in choice.split(',')]
            selected_files = [content_files[idx] for idx in indices if 0 <= idx < len(content_files)]
            if selected_files:
                return selected_files
            else:
                print("有効なファイルが選択されませんでした。もう一度試してください。")
        except ValueError:
            print("無効な入力です。数字(カンマ区切り)または'all'を入力してください。")

def transcribe_audio(file_name, lang="ja", model_size="large"):
    """音声ファイルを文字起こしする"""
    model = whisper.load_model(model_size)
    result = model.transcribe(f"content/{file_name}", language=lang)
    return result["text"]

def save_transcription(file_name, text, output_format="txt"):
    """文字起こし結果を保存する"""
    output_file = f'download/{file_name}.{output_format}'
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(f'▼{file_name}の書き起こし\n\n')
        f.write(text)
    print(f"文字起こし結果を{output_file}に保存しました。")

def main():
    selected_files = select_audio_files()
    if not selected_files:
        print("ファイルが選択されませんでした。プログラムを終了します。")
        return
    
    print(f"\n選択されたファイル: {', '.join(selected_files)}")
    
    # 言語の選択
    print("\nステップ2: 言語の選択")
    lang = input("言語を選択してください (ja/en): ").strip().lower() or "ja"
    model_size = "large"  # 直接 "large" を指定
    
    # 文字起こしの実行
    print("\nステップ3: 文字起こしの実行")
    for file_name in tqdm(selected_files, desc="全体の進捗"):
        try:
            print(f"\n処理中: {file_name}")
            transcription = transcribe_audio(file_name, lang, model_size)
            save_transcription(file_name, transcription)
            print(f"{file_name}の文字起こしが完了しました。")
        except Exception as e:
            print(f"{file_name}の処理中にエラーが発生しました: {str(e)}")
    
    # 結果の表示
    print("\nステップ4: 結果の確認")
    print('全ての文字起こし結果が downloadフォルダに保存されました。')

if __name__ == "__main__":
    main() 

6. 文字起こしの実行

  1. コードの実行が完了すると、処理可能な音声ファイルの一覧が表示されます。

  2. 指示に従って、処理したいファイルの番号を入力します(複数ある場合はカンマ区切り、全て選択する場合は 'all' と入力)。

  3. 言語を選択します(日本語の場合は 'ja'、英語の場合は 'en')。

  4. 文字起こしが開始され、進捗状況が表示されます。

7. 結果の確認

  1. 文字起こしが完了すると、結果が「download」フォルダに保存されます。

  2. 左側のファイルメニューから「download」フォルダを開き、生成されたテキストファイルをダウンロードして内容を確認できます。

注意点

  • 音声ファイルの長さや複雑さによっては処理に時間がかかる場合があります。

  • Colabの無料版を使用している場合、長時間の使用や大量のリソースを消費すると、一時的に利用が制限される可能性があります。

  • 個人情報や機密情報を含む音声の処理には十分注意してください。

まとめ

以上で、Google ColaboratoryとWhisperを使った無料の音声文字起こしの手順は完了です。この方法を使えば、プログラミングの専門知識がなくても、高精度な文字起こしを手軽に、そして無料で行うことができます。有料のサービスと遜色ない品質で文字起こしができるため、プロのライター・編集者も活用できると思います。

ここから先は

0字

¥ 500

この記事が気に入ったらサポートをしてみませんか?