mieki256's diary



2024/09/18(水) [n年前の日記]

#2 [python] edge-ttsを試用

英語に対応した音声合成ソフトを使いたいとググっていたら、PythonからMicrosoft Edge経由で音声合成(TTS)を呼び出せる、edge-tts なるモジュールがあると知った。

_Pythonで音声合成 〜edge-ttsを利用して英語の音声ファイルを作成〜 | 東陽テクニカ | “はかる"技術で未来を創る | ワン・テクノロジーズ・カンパニー
_UbuntuやRaspberry Piでも利用可能な音声合成エンジン、Edge-TTSの導入方法 - uepon日々の備忘録
_[Pythonプログラミング]最新のAI音声合成ライブラリEdgeTTSを試してみる : 乙Py先生のプログラミング教室

気になったので試用してみることにした。環境は Windows10 x64 22H2 + Python 3.10.10 64bit。

インストール :

pip でインストール。
pip install edge-tts

色々なモジュールがインストールされた…。
> pip install edge-tts
Collecting edge-tts
  Downloading edge_tts-6.1.12-py3-none-any.whl.metadata (4.0 kB)
Collecting aiohttp>=3.8.0 (from edge-tts)
  Downloading aiohttp-3.10.5-cp310-cp310-win_amd64.whl.metadata (7.8 kB)
Collecting certifi>=2023.11.17 (from edge-tts)
  Downloading certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB)
Collecting aiohappyeyeballs>=2.3.0 (from aiohttp>=3.8.0->edge-tts)
  Downloading aiohappyeyeballs-2.4.0-py3-none-any.whl.metadata (5.9 kB)
Collecting aiosignal>=1.1.2 (from aiohttp>=3.8.0->edge-tts)
  Using cached aiosignal-1.3.1-py3-none-any.whl.metadata (4.0 kB)
Collecting attrs>=17.3.0 (from aiohttp>=3.8.0->edge-tts)
  Downloading attrs-24.2.0-py3-none-any.whl.metadata (11 kB)
Collecting frozenlist>=1.1.1 (from aiohttp>=3.8.0->edge-tts)
  Using cached frozenlist-1.4.1-cp310-cp310-win_amd64.whl.metadata (12 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp>=3.8.0->edge-tts)
  Downloading multidict-6.1.0-cp310-cp310-win_amd64.whl.metadata (5.1 kB)
Collecting yarl<2.0,>=1.0 (from aiohttp>=3.8.0->edge-tts)
  Downloading yarl-1.11.1-cp310-cp310-win_amd64.whl.metadata (49 kB)
Collecting async-timeout<5.0,>=4.0 (from aiohttp>=3.8.0->edge-tts)
  Using cached async_timeout-4.0.3-py3-none-any.whl.metadata (4.2 kB)
Requirement already satisfied: typing-extensions>=4.1.0 in d:\python\python310-64\lib\site-packages (from multidict<7.0,>=4.5->aiohttp>=3.8.0->edge-tts) (4.5.0)
Requirement already satisfied: idna>=2.0 in d:\python\python310-64\lib\site-packages (from yarl<2.0,>=1.0->aiohttp>=3.8.0->edge-tts) (3.4)
Downloading edge_tts-6.1.12-py3-none-any.whl (29 kB)
Downloading aiohttp-3.10.5-cp310-cp310-win_amd64.whl (379 kB)
Downloading certifi-2024.8.30-py3-none-any.whl (167 kB)
Downloading aiohappyeyeballs-2.4.0-py3-none-any.whl (12 kB)
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Using cached async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Downloading attrs-24.2.0-py3-none-any.whl (63 kB)
Using cached frozenlist-1.4.1-cp310-cp310-win_amd64.whl (50 kB)
Downloading multidict-6.1.0-cp310-cp310-win_amd64.whl (28 kB)
Downloading yarl-1.11.1-cp310-cp310-win_amd64.whl (110 kB)
Installing collected packages: multidict, frozenlist, certifi, attrs, async-timeout, aiohappyeyeballs, yarl, aiosignal, aiohttp, edge-tts
  Attempting uninstall: certifi
    Found existing installation: certifi 2022.12.7
    Uninstalling certifi-2022.12.7:
      Successfully uninstalled certifi-2022.12.7
Successfully installed aiohappyeyeballs-2.4.0 aiohttp-3.10.5 aiosignal-1.3.1 async-timeout-4.0.3 attrs-24.2.0 certifi-2024.8.30 edge-tts-6.1.12 frozenlist-1.4.1 multidict-6.1.0 yarl-1.11.1

動作確認 :

edge-tts というコマンドと、edge-playback というコマンドが入るらしい。
> which edge-tts
"D:\Python\Python310-64\Scripts\edge-tts.exe"

> which edge-playback
"D:\Python\Python310-64\Scripts\edge-playback.exe"

edge-tts は、音声合成の結果をファイルとして出力する。mp3を出力して動作確認してみる。
edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

edge-tts --text "こんにちは、世界" -v ja-JP-NanamiNeural --write-media jhello.mp3 --write-subtitles jhello.vtt

hello.mp3、jhello.mp3 が保存された。再生してみたら、たしかに「ハローワールド」「こんにちは世界」と喋ってる。


edge-playback は、その場で音声として鳴らしてくれるけれど、mpv という再生ソフトが必要になるらしい。Ubuntu Linux 20.04 LTS上で mpv をインストールして試してみたけれどたしかに音声がその場で鳴った。しかし、Windowsではどうすればいいんだろう…?

Windows版のmpvもあるらしい。mpv-x86_64-20240918-git-22620af.7z を入手して、解凍して、任意のディレクトリに置いて、環境変数PATHに追加してみたら動作してくれた。

_mpv.io
_mpv_rのインストール方法(Windows)|kwks_workshop

音声の種類 :

edge-tts -l または edge-tts --list-voices で、選択できる音声の種類が表示される。めちゃくちゃたくさんあるなと思ったけれど、どうやら言語別で用意されてるようで、実際には男性か女性かぐらいしか選べない感じもする。

日本語に対応しているのは以下だろうか。
Name: ja-JP-KeitaNeural
Gender: Male

Name: ja-JP-NanamiNeural
Gender: Female

英語(en-us)は結構あるな…。男女別で分けると以下のような感じだろうか。
Gender: Female
en-US-AnaNeural
en-US-AriaNeural
en-US-AvaMultilingualNeural
en-US-AvaNeural
en-US-EmmaMultilingualNeural
en-US-EmmaNeural
en-US-JennyNeural
en-US-MichelleNeural

Gender: Male
en-US-AndrewMultilingualNeural
en-US-AndrewNeural
en-US-BrianMultilingualNeural
en-US-BrianNeural
en-US-ChristopherNeural
en-US-EricNeural
en-US-GuyNeural
en-US-RogerNeural
en-US-SteffanNeural

以上です。

過去ログ表示

Prev - 2024/09 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project