Pythonで作る!初心者でも分かる合成音声作成の10ステップ

Pythonのコードエディタに表示されている合成音声の作成プロセスPython
この記事は約9分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

こんにちは、プログラミングをこれから始める初心者の方にとって最初の一歩が難しいものであることはよく分かっています。

Pythonを用いて、初めての合成音声を作成しましょう。

基礎から応用まで、10のステップで説明します。

プログラミング初心者でも安心の詳細な説明とサンプルコードが準備されています。

●Pythonとは

Pythonは、シンプルな構文と豊富なライブラリが特徴のプログラミング言語です。

その可読性の高さから初学者にとって学びやすい言語とされています。

○Pythonの特徴

  1. フリーでオープンソースのプログラミング言語であり、商用利用も可能です。
  2. シンプルな文法で可読性が高く、コードのメンテナンスが容易です。
  3. 高レベルのデータ型を標準装備しており、複雑な操作をシンプルなコードで書くことができます。
  4. オブジェクト指向、命令型、手続き型、関数型といったさまざまなプログラミングスタイルをサポートしています。
  5. 数値計算やデータ分析、AIや機械学習、ウェブ開発など、幅広い用途で利用できます。

●合成音声とは

合成音声とは、人間の声を模倣した人工の声のことを指します。

これはテキストを音声に変換するテクノロジーによって作成されます。

アナウンス、ナビゲーション、音声アシスタントなど、さまざまな場所で使用されています。

○合成音声の種類

合成音声には、主に次の3つの種類があります。

  1. フォルマント合成:音声の特性を合成し、人間の声を模倣します。自然さには欠けますが、生成速度が速く、リソースをあまり消費しません。
  2. 音声合成:録音した音声を元に作成されます。非常に自然な音声を生成できますが、新たな単語やフレーズを作成するのは難しいです。
  3. 深層学習に基づく音声合成:AI技術を使用して音声を生成します。自然な音声を生成でき、未知の単語やフレーズも生成可能です。

●Pythonで合成音声を作成するために必要なモジュール

Pythonで合成音声を作成するには、いくつかのモジュールがありますが、今回はpyttsx3を使用します。

このモジュールは、OSに依存せず、オフラインで動作するため、インターネット接続のない環境でも使用できます。

○Pyttsx3の紹介

Pyttsx3は、Pythonで利用可能なテキストツースピーチ(TTS)エンジンです。

このモジュールはプラットフォームに依存せず、またオフラインで動作します。

また、音声のスピードや音量、音声のトーンなど、音声の細かな調整が可能で、さらに合成した音声を音声ファイルとして保存することもできます。

●Pyttsx3のインストール方法

Pythonにはパッケージ管理ツールであるpipが標準装備されており、このpipを用いてPyttsx3をインストールします。

○サンプルコード1:Pyttsx3のインストール

# コマンドプロンプトやターミナルを開き、以下のコマンドを入力します
pip install pyttsx3

このコードはpipを使ってPyttsx3をインストールするコマンドを紹介しています。

この例では、pip installというコマンドを使用してPyttsx3というPythonのパッケージをインストールしています。

以上の操作を行うことでPythonで合成音声を作成する準備が整いました。

●Pythonでの合成音声作成の基本

次に、Pythonでの合成音声の作成方法を解説します。

○サンプルコード2:基本的な音声合成コード

# モジュールのインポート
import pyttsx3

# エンジンの生成
engine = pyttsx3.init()

# テキストの設定
engine.say("こんにちは、Pythonの世界へようこそ!")

# 音声の出力
engine.runAndWait()

このコードでは、まずpyttsx3モジュールをインポートします。

次に、pyttsx3.init()で音声合成エンジンを生成します。

そして、engine.say()メソッドで読み上げるテキストを設定し、engine.runAndWait()で音声を出力します。

この例では、「こんにちは、Pythonの世界へようこそ!」というテキストを音声で出力しています。

●音声のカスタマイズ方法

Pythonで合成音声を作成した後に、次に考えたいのがその音声のカスタマイズです

スピードや音量、そして音のトーンを変更することで、より自然な音声を作り出すことが可能となります。

では、それぞれの方法を一つずつ見ていきましょう。

○サンプルコード3:音声のスピードと音量を調節する

今回は音声のスピードと音量を調節するコードを紹介します。

この例では、Pythonのライブラリであるpyttsx3の中にあるプロパティを変更することで音声のスピードと音量を変更しています。

import pyttsx3

engine = pyttsx3.init()

# 音声のスピードを設定する
rate = engine.getProperty('rate')
engine.setProperty('rate', rate-50)

# 音量を設定する
volume = engine.getProperty('volume')
engine.setProperty('volume', volume+0.3)

engine.say('こんにちは、世界!')
engine.runAndWait()

このコードは、pyttsx3を使用して、合成音声のスピードと音量を調整しています。

具体的には、初めに現在のスピード(’rate’)と音量(’volume’)を取得します。

次に、それぞれの値を変更して、新たなスピードと音量を設定します。

ここでは、音声のスピードを50低下させ、音量を0.3増加させています。

○サンプルコード4:音声のトーンを変更する

続いては、音声のトーンを変更する方法です。

これは音声の「声質」を変えるという意味で、具体的には異なる「声」を選択することで実現します。

import pyttsx3

engine = pyttsx3.init()

# 使用可能な声のリストを取得
voices = engine.getProperty('voices')

# 2番目の声を選択
engine.setProperty('voice', voices[1].id)

engine.say('こんにちは、世界!')
engine.runAndWait()

このコードでは、使用可能な全ての声(’voices’)を取得し、その中から2番目の声を選択しています。

選択された声は、’voice’プロパティに設定され、その後に出力される音声は新しい声質を持つことになります。

●音声の保存方法

合成音声を作成した後は、その結果を保存したいと思うことでしょう。

そこで、次にPythonで音声を保存する方法について説明します。

○サンプルコード5:合成音声の保存

今回は、合成した音声を保存するコードを紹介します。

この例では、sayメソッドの代わりにsave_to_fileメソッドを使用して、音声をファイルとして保存しています。

import pyttsx3

engine = pyttsx3.init()

engine.save_to_file('こんにちは、世界!', 'output.mp3')
engine.runAndWait()

このコードでは、保存したいテキストと保存先のファイル名を引数としてsave_to_fileメソッドに渡します。

そして、runAndWaitメソッドを呼び出すと、指定したテキストが音声に変換され、指定したファイル名で保存されます。

●エラー時の対処法

Pythonで音声合成を行っていると、エラーが発生する可能性があります。

そのような時はまずエラーメッセージをよく読み、問題の原因を理解しましょう。

エラーは多くの場合、コードのタイプミスやライブラリの不適切な使用によるものです。

そして、Google検索やStack Overflowなどの質問サイトを利用すると、同じ問題に直面している他の開発者からの解決策を見つけることができます。

また、問題が解決しない場合や、問題の原因がわからない場合は、Pythonのコミュニティやフォーラムに質問を投稿することをお勧めします。

多くの場合、コミュニティのメンバーは喜んで助けてくれます。

●Pythonでの合成音声作成の応用例

Pythonを使用した合成音声の応用例について見てみましょう。

今回は、長いテキストの読み上げと音声アシスタントの作成について説明します。

○サンプルコード6:長いテキストの読み上げ

今回は、長いテキストを読み上げるコードを紹介します。

この例では、テキストファイルを開いてその内容を読み込み、そのテキストを読み上げています。

import pyttsx3

engine = pyttsx3.init()

with open('long_text.txt', 'r', encoding='utf-8') as f:
    text = f.read()

engine.say(text)
engine.runAndWait()

このコードでは、Pythonのopen関数を使用してテキストファイルを開き、readメソッドでその内容を一括して読み込んでいます。

その後、読み込んだテキストをsayメソッドに渡して音声合成を行い、runAndWaitメソッドで音声を出力しています。

○サンプルコード7:音声アシスタントの作成

次に、音声アシスタントを作成するコードを紹介します。

この例では、音声認識と音声合成を組み合わせて簡単な音声アシスタントを作成しています。

import speech_recognition as sr
import pyttsx3

# 音声認識オブジェクトを作成
r = sr.Recognizer()

# 音声合成エンジンを作成
engine = pyttsx3.init()

with sr.Microphone() as source:
    print("何か話してください:")
    audio = r.listen(source)

    try:
        # 音声をテキストに変換
        text = r.recognize_google(audio, language='ja-JP')
        print(f"あなたが言ったこと:{text}")

        # テキストを音声に変換して答える
        engine.say(f"あなたが言ったことは「{text}」ですね。")
        engine.runAndWait()

    except:
        engine.say("申し訳ありません、何を言っているのか理解できませんでした。")
        engine.runAndWait()

このコードでは、初めに音声認識オブジェクトと音声合成エンジンを作成しています。

次に、マイクからの入力を受け取り、それをテキストに変換します。

そして、変換したテキストを音声に戻して答えます。もし音声認識ができなかった場合は、その旨を音声で伝えます。

まとめ

以上、Pythonを使用して合成音声を作成する方法について説明しました。

基本的な音声の生成から、音声のカスタマイズ、保存、さらにはエラー時の対処法までを取り扱いました。

また、実用的な応用例として長いテキストの読み上げや音声アシスタントの作成も紹介しました。

Pythonを使った音声合成は、その豊富なライブラリと簡単なコードの書き方により、誰でも短時間で始めることができます。

そして、さらに深く学び、応用していくことで、音声認識や音声アシスタントなど、より高度なプログラムを作ることも可能です。

これからもPythonを使って、自分だけの音声合成アプリケーションを作り、音声技術の世界を楽しみましょう。