0
2

音声データをテキストへ:WhisperとPythonで簡単変換のテクニック

Posted at

はじめに

この記事では、Pythonを使って大きな音声ファイルを分割し、各部分をテキストに変換する方法を紹介します。
これにはopenaipydubライブラリを使用し、特にOpenAIのAPI(whisper)を活用して高精度な音声認識を行います。

OpenAIのAPIで文字起こしができるファイル容量の上限は25MBなので、それよりも大きい音声ファイルを扱うときに、ファイルを分割して文字起こしをするプログラムを紹介します。

必要なライブラリのインストール

まず、必要なライブラリをインストールしましょう。
これらのライブラリはPythonの環境によってはデフォルトでインストールされていない可能性があるため、以下のコマンドでインストールしてください。

$ pip3 install tiktoken cohere openai pydub

プログラムのコード

以下が本プログラムの全体のコードです。
このプログラムは、大きな音声ファイルを分割し、それぞれの部分をテキストに変換する機能を持っています。

from openai import OpenAI
from pydub import AudioSegment
import os
import math

# OpenAIのAPIキー設定
OPENAI_API_KEY = "***"
client = OpenAI(api_key=OPENAI_API_KEY)

def split_audio(file_path, size_mb=20):
    """
    指定された音声ファイルを指定されたサイズで分割する。
    :param file_path: 分割する音声ファイルのパス。
    :param size_mb: 分割するサイズ(MB)。
    :return: 分割されたファイルのパスのリスト。
    """
    audio = AudioSegment.from_file(file_path)
    file_size = os.path.getsize(file_path)
    num_parts = math.ceil(file_size / (size_mb * 1024 * 1024))
    length = len(audio)
    part_length = math.ceil(length / num_parts)
    parts = []

    for i in range(num_parts):
        start = i * part_length
        end = min((i + 1) * part_length, length)
        part = audio[start:end]
        part_file_path = f"part_{i + 1}.mp3"
        part.export(part_file_path, format="mp3")
        parts.append(part_file_path)

    return parts

def convert_to_text(file_paths):
    """
    指定された音声ファイルをテキストに変換し、1つのファイルに出力する。
    :param file_paths: 変換する音声ファイルのパスのリスト。
    :return: None
    """
    with open("final_transcript.txt", "w") as final_text_file:
        for i, file_path in enumerate(file_paths):
            with open(file_path, "rb") as audio_file:
                transcript = client.audio.transcriptions.create(
                    model="whisper-1",
                    file=audio_file,
                    response_format="text"
                )
                final_text_file.write(transcript + "\n")

# 使用例
audio_file_path = "/content/240221_1459.mp3"
parts = split_audio(audio_file_path, 20)
convert_to_text(parts)

このコードは、音声ファイルを指定されたサイズで分割し、各部分をテキストに変換する流れを示しています。
特に、split_audio関数は音声ファイルを分割し、convert_to_text関数はそれらをテキストに変換します。

使い方

このプログラムを使用するには、まずOpenAIのAPIキーを設定する必要があります。
APIキーを取得したら、OPENAI_API_KEY変数にキーを設定してください。

次に、変換したい音声ファイルのパスをaudio_file_pathに設定し、プログラムを実行します。
すると、指定された音声ファイルが分割され、それぞれの部分がテキストに変換され、final_transcript.txtに出力されます。

まとめ

このプログラムは、会議の録音、インタビュー、ポッドキャストなど、長い音声をテキストに変換するのに非常に便利です。
PythonとOpenAIを利用して、効率的かつ正確な音声認識を行うことができます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2