python で音声作成・メモ

Google Colaboratory（Colab）は、機械学習やデータ分析のための無料のクラウドサービスで、Jupyterノートブックの形式でPythonを簡単に実行できます。この記事では、Colabを使用して音声ファイルの作成、そして速度を変更し、その結果をGoogleドライブに保存する方法を説明します。

***

# 手順1：音声ファイルを作成し再生する

Google Text-to-Speech（gTTS）を使用して、テキストを音声に変換します。以下のコードをColabで実行してください。

<pre><code>!pip install gTTS

from gtts import gTTS

# 読み上げるテキストのリスト
texts = [
    "オースティン・ヘイズはセカンドベースマンのウィット・メリフィールドにポップフライでアウト。",
    "アドリー・ラッチマンはスイングで三振し、キャッチャーのダニー・ジャンセンからファーストベースマンのブラディミール・ゲレーロ・ジュニアへ。",
    "アンソニー・サンタンデルは四球で出塁。",
    "ガナー・ヘンダーソンは左翼手のドールトン・バーショに対するラインドライブのシングルヒット。アンソニー・サンタンデルが得点。",
    "ラモン・ウリアスはスイングで三振。",
    "ジェームズ・マカンはセカンドベースマンのウィット・メリフィールドからファーストベースマンのブラディミール・ゲレーロ・ジュニアへのゴロでアウト。",
    "アダム・フレイザーはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。",
    "ケブライアン・ヘイズはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。アダム・フレイザーが得点。",
    "ブライアン・レイノルズはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。ケブライアン・ヘイズが得点。",
    "コリン・モランはセンターフィールダーのマイケル・A・テイラーに対するフライでアウト。",
    "ジェイコブ・スタリングスはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。ブライアン・レイノルズが得点。",
    "エリック・ゴンザレスはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。ジェイコブ・スタリングスが得点。",
    "フィリップ・エバンスはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。エリック・ゴンザレスが得点。",
    "ベン・ギャメルはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。フィリップ・エバンスが得点。",
    "ケビン・ニューマンは右翼手のジョージ・ソラーに対するフライでアウト。",
    "アダム・フレイザーはセカンドベースマンのウィット・メリフィールドに対するゴロでアウト。",
    "ケブライアン・ヘイズはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。",
    "ブライアン・レイノルズはセカンドベースマンのウィット・メリフィールドからファーストベースマンのブラディミール・ゲレーロ・ジュニアへのゴロでアウト。",
    "コリン・モランはスイングで三振。",
    "ジェイコブ・スタリングスはスイングで三振。",
    "エリック・ゴンザレスはスイングで三振。",
    "フィリップ・エバンスはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。",
    "ベン・ギャメルはピッチャーのジェイク・ジュニスに対するゴロのシングルヒット。フィリップ・エバンスが得点。",
    "ケビン・ニューマンは右翼手のジョージ・ソラーに対するフライでアウト。"
]

# 各プレイの記述を個別のMP3ファイルに変換
for i, text in enumerate(texts):
    tts = gTTS(text, lang='ja')
    tts.save(f'play{i+1}.mp3')

</code></pre>

上記のコードは、textsリストの各テキストを日本語音声に変換し、それぞれを個別のMP3ファイルとして保存します。

次に、音声ファイルを再生します。以下のコードをColabで実行してください。

<pre><code>from IPython.display import Audio

# 音声ファイルの再生
Audio("play1.mp3")
</code></pre>

上記コードは、作成した最初の音声ファイルを再生します。

***

# 手順2：Googleドライブをマウントする

GoogleドライブをColabにマウントします。これにより、ColabからGoogleドライブ内のファイルにアクセスしたり、Googleドライブにファイルを保存したりすることができます。以下のコードをColabで実行してください。

<pre><code>from google.colab import drive
drive.mount('/content/drive')
</code></pre>

上記コードを実行すると、リンクとともに認証コードの入力を求めるプロンプトが表示されます。リンクをクリックしてGoogleアカウントを選択し、表示された認証コードをコピーしてプロンプトにペーストします。

***

# 手順3：Googleドライブに新しいフォルダを作成

次に、音声ファイルを保存するための新しいフォルダをGoogleドライブに作成します。以下のコードをColabで実行してください。

<pre><code>import os

folder_name = "YourFolderName"  # フォルダ名を適宜設定してください
folder_path = os.path.join("/content/drive/My Drive", folder_name)

# フォルダが存在しない場合、新規に作成
if not os.path.exists(folder_path):
    os.makedirs(folder_path)
</code></pre>

上記コードはGoogleドライブのルートに新しいフォルダを作成します。"YourFolderName"を適宜変更して、希望のフォルダ名にしてください。

***

# 手順4：音声ファイルの速度を変更し、Googleドライブに保存

最後に、音声ファイルの速度を変更し、作成したフォルダに保存します。このためにはpydubというライブラリを使用します。以下のコードをColabで実行してください。

<pre><code>!pip install pydub
!apt install -y ffmpeg

from pydub import AudioSegment

# textsの各エントリーに対して、音声の速度を変更して新しいファイルに保存します。
for i in range(len(texts)):
    # 元の音声ファイルをロード
    sound = AudioSegment.from_file(f"play{i+1}.mp3")

    # 速度を1.25倍にする
    fast_sound = sound.speedup(playback_speed=1.25)

    # Googleドライブのフォルダに変更した音声を保存
    fast_sound.export(os.path.join(folder_path, f"fast_play{i+1}.mp3"), format="mp3")

</code></pre>

上記コードでは、textsというリストの各エントリーに対して、音声の速度を変更し、新しいファイルを作成し、Googleドライブに保存しています。

これで、すべての音声ファイルがGoogleドライブの指定したフォルダに保存されます。