ChatGPT

【高精度スピーチ】声を生かしたオーディオブック制作:Pythonとedge_ttsを活用したプログラム解説

オーディオコンテンツの需要は日々高まっており、特にオーディオブックやポッドキャストが人気を集めています。しかし、オーディオコンテンツの制作には専門知識や高価なソフトウェアが必要だと思われがちです。そんな中、Pythonを用いて手軽にオーディオブックを作成できる方法が注目されています。今回は、Pythonとedge_ttsを活用した独自のオーディオブック制作プログラムについて紹介します。

これまで日本語のスピーチはあまり精度が高くなかったですが、現在のスピーチのレベルはかなり上がっています。これがフリーで使用できるので素晴らしいです。

アイコン名を入力

・オーディオコンテンツ制作に関する技術的な知識が不足している。
・高品質なオーディオファイルを効率的に生成する方法を知りたい。
・プログラミングを活用して創造的なオーディオプロジェクトを実現したい。

こんな疑問に答えます。

解決できること

・Pythonとedge_ttsを用いたオーディオ制作の基本を学ぶ。
・簡潔なコードで高品質なオーディオファイルを生成する技術を身につける。
・オーディオコンテンツ制作のためのプログラミング応用方法を理解する。

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンスです。 エンジニア転職を考えている方やプログラミングに興味がある方、新しいスキルを習得したい方に特におすすめです。

第1章:オーディオブック制作の基礎知識

このプログラムは、CSVファイルからのデータ読み込み、テキストからオーディオファイルへの変換、そしてオーディオファイルの結合という3つの基本ステップで構成されています。Pythonとedge_ttsライブラリを使い、簡単なステップでオーディオファイルを作成し、結合する方法を紹介します。

1.1 CSVファイルからのデータ読み込み

このステップでは、csv モジュールを使ってCSVファイルからデータを読み込みます。このプログラムでは、スピーカー名を削除し、会話のテキストだけを抽出します。

1.2 テキストからオーディオへの変換

次に、edge_tts ライブラリを使用してテキストをオーディオに変換します。このライブラリは、異なる声(例:NanamiNeuralとKeitaNeural)や、声の速度、ピッチを調整する機能を提供します。かなり日本語も高精度に話をするため面白いです。

1.3 オーディオファイルの結合

最後にffmpeg を利用して個別に生成されたオーディオファイルを一つのファイルに結合します。これにより、複数のセリフや段落が一つの流れるようなオーディオファイルとなります。

第2章:プログラムの解説とコード詳細

2.1 コードの全体像

このプログラムは、CSVファイルからデータを読み込み、edge_ttsを使用してテキストをオーディオに変換し、最後にffmpegを用いて複数のオーディオファイルを結合することで、一つのオーディオファイルを生成します。

2.1.1 プログラムコード

import csv
import subprocess
import edge_tts
import os

# CSVファイルから会話を読み込み、スピーカー名を削除
dialogue = []
with open('test.csv', 'r', encoding='utf-8') as file:
    csv_reader = csv.reader(file)
    for row in csv_reader:
        text = row[0].split(":", 1)[-1].strip()  # スピーカー名を削除
        dialogue.append(text)

# NanamiNeuralとKeitaNeuralの声を設定
VOICE_NANAMI = "ja-JP-NanamiNeural"
VOICE_KEITA = "ja-JP-KeitaNeural"
RATE = "+30%"
PITCH = "-0Hz"

# 一時的なファイルのリスト
temp_files = []

# 各セリフを別々のオーディオファイルとして保存
for i, text in enumerate(dialogue):
    voice = VOICE_NANAMI if i % 2 == 0 else VOICE_KEITA
    temp_file = f"temp_part_{i}.mp3"
    communicate = edge_tts.Communicate(text, voice, rate=RATE, pitch=PITCH)
    await communicate.save(temp_file)
    temp_files.append(temp_file)

# ffmpegを使用してオーディオファイルを結合
output_file = "final_audio.mp3"
concat_command = f"ffmpeg -y -i \"concat:{'|'.join(temp_files)}\" -acodec copy {output_file}"
subprocess.run(concat_command, shell=True)

# 一時ファイルを削除
for temp_file in temp_files:
    os.remove(temp_file)

CSVファイルはtest.csvのファイル名称で下記のように記載しています。

ななみ: "最近プログラミングに興味があるんだけど、どうやって勉強し始めたらいいと思う?",
けいた: "いい質問だね。まずはオンラインのチュートリアルから始めるのがいいと思うよ。たくさんの無料コースがあるから、基本から学べる。",
ななみ: "無料コースがいいね!でも、どのプログラミング言語から始めるべき?",
けいた: "Pythonは初心者に優しいから、それから始めるのがおすすめ。データサイエンスやウェブ開発にも使えるし。",
ななみ: "Pythonかぁ。じゃあ、実際にコードを書いてみるのが大事なの?",
けいた: "そうだね。理解したことを実際にコードで書いてみることが重要。エラーを直しながら学べるからね。",
ななみ: "なるほど、エラーを直すのも勉強になるんだ。でも、わからないことがあったらどうすればいいの?",
けいた: "オンラインフォーラムやコミュニティに質問するといいよ。Stack Overflowみたいなサイトには、たくさんのエキスパートがいるから。",
ななみ: "オンラインコミュニティの利用も大事なんだね。他に何か気をつけることはある?",
けいた: "プロジェクトを自分で作ってみるのがいいよ。小さいものから始めて、徐々に大きなものに挑戦すると、実践的なスキルが身につく。",
ななみ: "自分のプロジェクトを作るのがいいのね。ありがとう、けいた!一緒に勉強頑張ろうね。"

実際の会話の音声がこちらになっています。

英語だとかなり精度もよいですが、日本語の精度もかなり上がっています。十分使用できるレベルです。

2.2 各ステップの解説

2.2.1 CSVファイルからのデータ読み込み

この部分では、Pythonのcsvモジュールを使ってCSVファイル(test.csv)からデータを読み込みます。CSVファイルにように、スピーカー名と会話テキストがコロン(:)で区切られていることを想定し、スピーカー名を除去して純粋な会話テキストのみを抽出します。

# CSVファイルから会話を読み込み、スピーカー名を削除
dialogue = []
with open('test.csv', 'r', encoding='utf-8') as file:
    csv_reader = csv.reader(file)
    for row in csv_reader:
        text = row[0].split(":", 1)[-1].strip()  # スピーカー名を削除
        dialogue.append(text)

2.2.2 edge_ttsを用いた音声合成

edge_ttsライブラリは、Microsoft Edgeのテキスト音声変換機能をPythonで利用するためのものです。ここでは、NanamiNeuralとKeitaNeuralの二つの異なる音声と、それぞれの会話テキストを用いてオーディオファイルを生成します。また、話速(RATE)とピッチ(PITCH)を調整して、音声の特徴を変更できます。

下記パラメータを修正することにより音声が大きく変わります。RATEは速度、PITCHは声質が変化します。

VOICE_NANAMI = "ja-JP-NanamiNeural"
VOICE_KEITA = "ja-JP-KeitaNeural"
RATE = "+30%"
PITCH = "-0Hz"

例えば、英語を使用する場合は、VOICE = “en-GB-SoniaNeural”

で英語になります。そのほかにも男性・女性・国ごとのスピーカーを設定可能です。Command Prompt上で下記コマンドを打つとSpeekerのリストを出してくれます。

edge-tts --list-voices

英語版にすると下記のようなSpeechになります。

2.2.3 ffmpegを使用したオーディオファイルの結合

最後に、ffmpegコマンドを使って、生成された複数のオーディオファイル(temp_part_*.mp3)を一つのファイル(final_audio.mp3)に結合します。このコマンドは、Pythonのsubprocessモジュールを通じて実行され、複数のオーディオファイルを連続的なオーディオトラックに結合します。

インストールしていない方は、ffmpegをダウンロードし、pathを通してください。

# ffmpegを使用してオーディオファイルを結合
output_file = "final_audio.mp3"
concat_command = f"ffmpeg -y -i \"concat:{'|'.join(temp_files)}\" -acodec copy {output_file}"
subprocess.run(concat_command, shell=True)

2.2.4 一時ファイルの清掃

最終的に、生成された一時的なオーディオファイルを削除します。これは、不要なデータの蓄積を防ぎ、システムの整理整頓を保つために重要です。

保存する場合には、コメントアウトすれば各会話が保存されます。

# 一時ファイルを削除
for temp_file in temp_files:
    os.remove(temp_file)

2.3 プログラムの応用可能性

このプログラムは、オーディオブック制作のみならず、言語学習教材、ポッドキャスト、インタラクティブなストーリーテリングなど、多岐にわたるオーディオ関連プロジェクトに応用することができます。高品質な音声合成と効率的なオーディオ処理を可能にし、コンテンツ制作者にとって強力なツールとなり得ます。

第3章:応用例としてのオーディオブック制作

3.1 オーディオブックの制作プロセス

このプログラムの応用例として特に注目すべきは、オーディオブックの制作です。オーディオブック制作では、物語や情報を聞き手に伝えるために、高品質な音声が求められます。本プログラムは、テキストからのオーディオ生成、キャラクターごとの声の分離、そしてオーディオファイルの連続的な結合という、オーディオブック制作に必要な主要な要素をカバーしています。

3.2 キャラクターの声の多様性

edge_ttsを活用することで、日本語の男性・女性の異なるキャラクターに異なる声を割り当てることが可能です。たとえば、「NanamiNeural」と「KeitaNeural」という異なる音声を使用することで、男性キャラクターと女性キャラクターの声を区別できます。これにより、聞き手は各キャラクターを識別しやすくなり、物語に深く没入することができます。

またそのほかにも英語音声も複数使用可能になっています。

3.3 オーディオファイルの品質と結合

ffmpegを使用したオーディオファイルの結合は、オーディオブック制作において最終的な品質を決定づける重要なプロセスです。個々の音声ファイルを一つの流れるようなトラックに結合することで、聞き手に対して一貫性のある聴覚体験を提供します。また、このプロセスは、長い時間にわたる物語や複数の章から成るオーディオブックにおいて、特に重要です。

3.4 実践的な応用

このプログラムの実践的な応用は多岐にわたります。オーディオブック制作だけでなく、教育用のオーディオ教材、ポッドキャスト、さらにはインタラクティブなストーリーテリングなど、さまざまなオーディオベースのプロジェクトで利用できます。私の経験では、特に言語学習教材の制作において、このプログラムの応用が非常に効果的でした。異なるキャラクターの声を使用することで、言語のニュアンスをより効果的に伝えることができるからです。

第4章:まとめと今後の展望

4.1 プログラムの要約

このプログラムは、テキストベースのコンテンツを高品質なオーディオファイルに変換する強力なツールです。Pythonを活用し、CSVファイルからのデータ読み込み、edge_ttsを用いたテキストからオーディオへの変換、そしてffmpegでのオーディオファイルの結合というプロセスを簡潔に実行します。このプログラムは、オーディオブック制作のみならず、教育資料、ポッドキャスト、インタラクティブなストーリーテリングなど、多岐にわたるオーディオコンテンツの制作に適用可能です。

4.2 実用性と利点

このプログラムの最大の利点は、その汎用性とアクセシビリティです。Pythonといくつかのモジュールを使用することで、専門的なオーディオ編集スキルがなくても高品質なオーディオコンテンツを作成することが可能になります。さらに、異なる声質や発話スタイルを適用することで、オーディオに豊かな表現を加えることができ、聴き手の体験を豊かにします。

4.3 今後の展望

このプログラムの潜在的な応用範囲は広大です。例えば、より多様な言語やアクセントの音声合成オプションを統合することで、国際的なオーディオブック市場や多言語学習教材のニーズに対応できます。また、AIに基づく感情認識技術を組み込むことで、テキストの感情を読み取り、それに応じた声のトーンや強弱を自動的に調整するなど、より高度なオーディオ体験を提供することも考えられます。

4.4 プログラムの改善と進化

技術の進化に伴い、このプログラムも継続的に改善される必要があります。ユーザーフィードバックを取り入れ、バグの修正や機能の追加を行うことで、さらに使いやすく、多機能なツールへと成長させることができます。オープンソースコミュニティとの協力を通じて、プログラムの機能強化や新たな応用方法の探求も可能です。

第4章まとめ

このプログラムは、オーディオコンテンツ制作の分野において大きな可能性を秘めています。Pythonのアクセシビリティと、edge_ttsやffmpegなどの強力なツールの組み合わせにより、専門的なスキルがなくても誰でも高品質なオーディオコンテンツを作成できる道が開かれています。今後も技術の進化とともに、このプログラムがさらに進化し、多様なニーズに応えることが期待されます。

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンス。
私がツナグバに登録してから、求人情報が豊富に届き、自分に合った仕事を見つけることができました。特に、第二新卒向けの求人情報が多いので、自分のスキルや経験を活かしながら新たなキャリアに挑戦することができました。転職活動は不安も多いですが、ツナグバのサポートがあれば、成功への道が明るく感じました。