Pythonで音声合成 ~edge-ttsを利用して英語の音声ファイルを作成~

SYNESIS開発

 

私はSYNESISの海外営業チームに在籍をしているSEです。が、英語が大の苦手です。特にスピーキングが苦手で、自分ではちゃんと発音しているのに全然通じなかった経験が何度もあります。
今回は、英語のプレゼンテーション用にAI音声を合成したことを記事にしました。私同様「英語でプレゼンテーションは苦手だな」という方に少しでもお役に立てれば嬉しいです。

使い勝手の良さそうな有償のTTS(Text-to-Speech)サービスはたくさん存在します。しかしながら、有償ですとなかなか手軽に試せません。
無料で手軽に音声合成した一例としてご紹介します。英語、日本語、中国語のサンプル音声を掲載しましたので、ぜひ実際に聞いてみてください。

使用したPC環境とAI音声

使用したAI音声とPC環境は以下のとおりです。

  • Windows 10
  • Python 3.11.4
  • edge-tts 6.1.7(Pythonリポジトリからダウンロード可能)

edge-ttsは、Python >=3.7が必須要件となっています。せっかくなので、PCを現時点での最新のPythonのバージョンにアップグレードしてみました。
Pythonソフトウェアは、Python公式ダウンロードページからダウンロードが可能です。インストール後、Pythonのパスが通ってなければパスを通しておきましょう。

edge-ttsのインストールと簡単な使い方

edge-tts 6.1.7のページにインストール方法とコマンド例の記載がありますので、詳細は公式ページでご確認ください。なお、公式ページはLinuxのコマンドで書かれていますので、この記事ではあえてWindowsでのコマンドを記載します。

インストール方法

インターネット接続が可能であれば、リポジトリから簡単にインストールできます。

>pip install edge-tts

pipxでのインストールも可能です。環境に応じて選択してください。

音声作成のコマンド例

インストールが完了したら、早速音声を作ってみます。

>edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

コマンドのオプションで出力する音声の種類、音声スピード(レート)、音量を変更可能です。"edge-tts"の後に半角スペースを入れてその後オプションを指定します。なお、オプションは省略可能です。

# 音声の種類
--voice ar-EG-SalmaNeural

# 音声スピード(レート)
--rate=-50%

# 音量
--volume=-50%

AI音声の品質

選択できる音声の種類は、英語だけで40種類弱あります。男性、女性のほかイギリス、オーストラリア、カナダ、香港、アメリカなど地域も選択できます。
今回は、社内の英語の達人(日本人)の意見をもとに"en-US-AriaNeural"を選択しました。音声サンプルとテキストはこちらです。このテキストは、ChatGPT版「桃太郎の英語要約」となっています。

record_voice_over 英語サンプル音声

テキスト(クリックすると全文が表示)

An old couple finds a giant peach floating down the river. When they open it, they discover a baby boy inside and name him Momotaro, meaning "Peach Boy." As Momotaro grows up, he becomes strong, brave, and kind-hearted.One day, he decides to journey to an island inhabited by evil demons. Along the way, he meets and befriends a talking dog, monkey, and pheasant, who agree to help him in his quest. They become his loyal companions.Together, Momotaro and his animal friends reach the island and confront the demons. Using his courage and strength, Momotaro defeats the demons and retrieves their stolen treasures. He returns home triumphant, bringing peace and happiness to his village.

これを聞くとAI音声の品質は一昔前より確実に進歩しているなぁ、と感じます。少なくとも"It's much better than my English speech."です。
この音声でSYNESISの機能概要のプレゼンテーションを作成し、SYNESISの海外代理店の方々に聞いていただきました。AI音声によるプレゼンテーションは概ね好評でした。ほとんどの方がストレスなく聞けるレベルとのことです。ただ、少数意見として、人間の声でのプレゼンテーションのほうが飽きずに聞ける、との声もありましたが、音声品質自体は問題はないとのことでした。

日本語は男性、女性の2種類の音声が用意されています。今回は女性の音声"ja-JP-NanamiNeural"を選択しました。私が日本語ネイティブだからでしょうか、英語よりは少し不自然さを感じます。
参考までに日本語版でも聞いてみてください。ChatGPT版「桃太郎の日本語要約」でのサンプル音声とテキストはこちらです。

record_voice_over 日本語サンプル音声

テキスト(クリックすると全文が表示)

昔々、大きな桃が川を流れてきました。桃を開けてみると、中には赤ちゃんの男の子がいました。その子は桃太郎と名付けられ、おじいさんとおばあさんに育てられました。桃太郎は大きくなると、強く勇敢で、やさしい心を持つ若者に成長しました。 ある日、桃太郎は悪い鬼が住む島に行くことを決め、犬、猿、雉をお供にしました。みんなで鬼たちを打ち負かし、盗まれた宝物を取り返しました。 桃太郎と仲間たちは勇気と優しさで村に平和と幸せをもたらしました。

中国語でも作成してみました。音声の種類は中国語のほか、香港や台湾もあります。
社内の中国語ネイティブに聞いてもらった結果、"zh-CN-XiaoxiaoNeural"が一番ビジネスに向くのでは?とのことでした。その音声で作成したChatGPT版「桃太郎の中国語要約」がこちらです。

record_voice_over 中国語サンプル音声

テキスト(クリックすると全文が表示)

从前,在一个古老的时代,有一个大桃子顺流而下。打开桃子,里面有一个婴儿男孩,取名桃太郎,他被一对老夫妇抚养长大。桃太郎成长为一个强壮、勇敢和善良的年轻人。一天,他决定前往一个居住着邪恶鬼怪的岛屿。他结识了一只会说话的狗、猴子和雉,它们成为了他忠实的伙伴。他们一起抵达了岛屿,与鬼怪对抗。凭借勇气和力量,桃太郎击败了鬼怪,夺回了被盗的宝物。凯旋而归,他为村庄带来了和平和幸福。

サンプルスクリプト

コマンド上でテキストを打つことは非常に面倒です。GitHub - edge-ttsでは、Pythonのサンプルスクリプトがいくつか掲載されています。
テキストを読み込ませて音声を作成する、等も可能ですので、環境にあわせていろいろ試してみてください。

(ご存知の方も多いと思いますが、)ファイルをコマンドプロンプト画面にドラッグアンドドロップするだけで、パス付きのファイル名を指定できます。スクリプトを実行する際などには大変便利ですので、ぜひ覚えておきましょう。

AI音声とPPTを組み合わせたSYNESISのUSECASE動画

実際にAI音声とPPTを組み合わせたSYNESISのUSECAS動画を作成してみました。英語のコンテンツのみですが、こちらも聞いてみてください。雰囲気がつかめるかと思います。

各紹介動画のリンクはこちらです。

play_circle_filled SYNESIS USECASE - VoIP Call Analysis & Troubleshooting

play_circle_filled SYNESIS USECASE - Quality Measurement of Vide Streaming

play_circle_filled SYNESIS USECASE - 4K/8K Video Recording

あとがき

今回はSYNESISの機能概要についてのプレゼンテーションでしたのでAI音声でもよかったですが、ここ一番で熱意を伝えるプレゼンテーションでは、やはり人間の声のほうが適していると思います。AI音声と自分の声を使い分けていくためにも、自分の考えを即座に正確に英語で伝えられるスキルがほしいです。

SYNESISで使用するツール、スクリプト類は、ゆくゆくはGitHubで公開したいと考えています。今回のサンプルスクリプトも準備ができ次第アップする予定です。公開しましたら本ブログで紹介しますので、ご期待ください!