はじめに
この記事では、Pythonを使って大きな音声ファイルを分割し、各部分をテキストに変換する方法を紹介します。
これにはopenai
とpydub
ライブラリを使用し、特に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を利用して、効率的かつ正確な音声認識を行うことができます。
会社紹介
株式会社 Mosaica
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。
詳しくは 公式サイト までお気軽にご相談ください。
公式サイト: https://mosaica.co.jp/