テキストファイルから各センテンスを読み込み、無音を挿入した統合音声ファイルと個別センテンスの音声ファイルを作成

[F:\英語の学習-実習\20241102\1-each_sentence_basename.py](作業場所メモ)

Pythonを使って、テキストファイル(.txt)から各センテンスを読み込み、無音を挿入した音声ファイル(統合ファイル)と個別センテンスの音声ファイルを作成する。

[手順]
(1) テキスト読み込み
sentences.txtファイルから各センテンスを読み込む。
(2) 音声合成 (Text-to-Speech)
音声合成ライブラリ(例えば gTTS (Google Text-to-Speech))を使用して、各センテンスを音声データに変換。
(3) 音声ファイルの保存

Hello, how are you?
I am learning Python.
This is a test sentence.
Let's go fishing after school.
What do you do every saturday.

[pythonコード]
from gtts import gTTS
from pydub import AudioSegment

# 一括でファイル名を定義
txt_file = "sentences.txt"
out_mp3 = "sentences_with_silence.mp3"

# 各センテンスの音声ファイル名の頭部
each_sentence_basename = "lesson"

# 無音の長さを秒単位で設定(センテンスとセンテンスの間に無音を設定する)
silence_duration = 3  # 3秒間の無音

# テキストファイルの読み込み
with open(txt_file, "r", encoding="utf-8") as file:
    sentences = file.readlines()

# 初期の空の音声データ(全体の音声ファイル)
combined_audio = AudioSegment.silent(duration=0)

# 各センテンスを音声に変換し、無音を追加
for i, sentence in enumerate(sentences, start=1):
    sentence = sentence.strip()
    if sentence:
        # テキストを音声に変換
        tts = gTTS(sentence, lang='en')
        
        # 各センテンスのファイル名を作成(例: lesson001.mp3)
        sentence_filename = f"{each_sentence_basename}-{i:03}.mp3"
        tts.save(sentence_filename)
        
        # 個別の音声ファイルを読み込む
        sentence_audio = AudioSegment.from_mp3(sentence_filename)
        
        # 全体の音声にセンテンスと無音を追加
        combined_audio += sentence_audio
        combined_audio += AudioSegment.silent(duration=silence_duration * 1000)  # ミリ秒に変換

# 最終的な音声ファイルを保存
combined_audio.export(out_mp3, format="mp3")

print("無音を挿入した音声ファイルと個別のセンテンス音声ファイルが生成されました。")