院内で流している動画に音声を追加できないか?と上司に相談されたので、調べてみたところ簡単にできました。今回はメモ代わりの記事です。
音声データの作成方法はいろいろあると思いますが、今回はかなり早く、無料で作成する方法を紹介します。もしこれ以上にお勧めの方法がありましたらコメント欄から教えてください。
gTTS(Google Text-to-Speech)を使っていきます。
流れとしては
1.初めて使う人はGoogle colab.の準備
2.読み上げ用のテキストデータ(text.txt)の用意
3.Pythonコードの作成(このサイトに書いてるコードをそのままコピペ)
4.コードの実行
5.mp3ファイルのダウンロード
という感じです。
Google colabratoryの準備
今回はGoogle colab.を使います。ローカルにpythonプログラムを開発する環境が構築されていればそちらを使ってください。
Google colabの準備に関してはネットに膨大な情報がありますので。例えば、このサイトを見て、準備してください。
Googleアカウントさえあればすぐに使えます。
読み上げ用のテキストの作成
読み上げるテキストをメモ帳に入力し、ファイル名をtext.txtとしておきます。
複数行の文章で構成しますが、文と文の間は@で区切ります。
@で区切っているのはそのようにPythonコードを書いたという理由ですので、自由にカスタマイズしてください。
読み上げが自然かどうかは出力して聞いて判断するしかありません。同じ内容で言い回しを変えると自然に聞こえることがありますので、いろいろと変えてみてください。
今回は以下のような文章としました。
受付表を放射線科の受付まで提出してください。@受付表を提出しなければ検査の順番が大幅に遅れます。@レントゲン撮影を受けられる方は受付前の椅子にお座りになってお待ちください。@CTおよびMRI検査を予約している方は緑の線に沿ってお進みください。@検査の順番は検査内容や予約、患者さんの状態によって前後することがありますのでご了承ください。@
このテキストファイルを保存し、Google colab.にアップロードします。
Pythonコード
#まず最初におまじないをします。Shift+Enterで実行してください。
!pip install gTTS
おまじないをした後の画面です。
次に実際に処理をするコードです。
import os
import shutil
from gtts import gTTS
import IPython.display as ipd
from google.colab import files
# mp3を保存するフォルダを作成(存在しない場合のみ)
output_dir = "/content/mp3/"
os.makedirs(output_dir, exist_ok=True)
# txtファイルを読み込む
txt_file = "text.txt"
with open(txt_file, "r", encoding="utf-8") as f:
text = f.read()
# "@" で文章を区切る
sentences = text.split("@")
# 各文章を gTTS で音声合成 & mp3保存
audio_files = []
for i, sentence in enumerate(sentences):
sentence = sentence.strip() # 空白や改行を削除
if sentence: # 空の文章はスキップ
mp3_filename = os.path.join(output_dir, f"output_{i+1}.mp3")
tts = gTTS(sentence, lang="ja") # 日本語で音声合成
tts.save(mp3_filename)
audio_files.append(mp3_filename)
print(f"Saved: {mp3_filename}")
# Google Colab 上で音声を順番に再生(一応、確認する)
for audio in audio_files:
print(f"Playing: {audio}")
ipd.display(ipd.Audio(audio))
# mp3フォルダをzip形式で圧縮
zip_filename = "/content/mp3_files.zip"
shutil.make_archive(zip_filename.replace(".zip", ""), 'zip', output_dir)
print(f"zip file created: {zip_filename}")
# zipファイルをダウンロード
files.download(zip_filename)
上記のコードをコピペした結果です。
Shift+Enterで実行します。実行した結果の画面です。
このコードを実行することで、mp3の作成からダウンロードまでが一括で行われます。
調べた感じ、たくさんの文章を音声データにするには、最も早いのではないかと思います。作成できるのがmp3形式だけですので、それ以外の形式にするには追加の処理が必要になります。