CUIでTTS(Text-To-Speach)を実行する方法
CUIベースの単語帳を作成していた時に英語の読み上げ機能が使えないか調べていたところMac限定ではありますが使用方法がありましたので記事にします。
環境
- Mac OS Big Sur 11.2.1
- Python 3.9.1 (使用する場合)
実行方法
sayコマンド
sayコマンド
Macにはsayというコマンドが存在しており、引数に読み上げて欲しい内容を入力すればシステムが読み上げてくれます。
say Hello world
ただし、デフォルトでは日本語話者の"Kyoko"さんが選択されていますので日本語っぽい英語になります。
音声切り替え
日本語話者以外はいないのか?と当然思いますよね。試しに以下のコマンドを実行してください。
say -v ?
すると以下のような結果が取得できると思います。こちらは選択できる話者の一覧で、これを明示的に指定することでネイティブの読み上げを確認することができます。
Alex en_US # Most people recognize me by my voice.
Alice it_IT # Salve, mi chiamo Alice e sono una voce italiana.
Allison en_US # Hello, my name is Allison. I am an American-English voice.
Alva sv_SE # Hej, jag heter Alva. Jag är en svensk röst.
Amelie fr_CA # Bonjour, je m’appelle Amelie. Je suis une voix canadienne.
Anna de_DE # Hallo, ich heiße Anna und ich bin eine deutsche Stimme.
Carmit he_IL # שלום. קוראים לי כרמית, ואני קול בשפה העברית.
(以下略)
試しにアメリカ英語のAllisonに読み上げてもらいましょう。
say -v Allison "Hello world"
いかがでしたでしょうか?先ほどとは違い英語話者っぽい発音が確認できたかと思います。
話者追加
では、この一覧以外は使えないのか?と思いますよね。実は追加することが可能です。
実際先ほど使用したAllisonもデフォルトでは一覧に表示されません。
[システム環境設定]→[アクセシビリティ]→[読み上げコンテンツ]
と選択し、話者の選択項目から「カスタマイズ」を選択します。
すると各言語ごとの話者が選択できますので、選択して「OK」を押すと音声データのダウンロードが開始され新たにその話者が使用できるようになります。もちろん先程の一覧にも表示されます。
Python
PythonにはOSのコマンドを実行する機能がありますのでPythonからでもこのコマンドを呼び出すことができます。
import sys
import subprocess
def pronounce():
voice = sys.argv[1]
text = sys.argv[2]
command = ['say', '-v', f'{voice}', f'{text}']
cp = subprocess.run(command)
return cp
if __name__ == '__main__':
pronounce()
これを以下のように呼び出すことで上記と同じような結果が取得できます。
python say.py Allison "Hello world"
ちなみにreturn cp
はしなくても良いのですが単体テストなどをする際にcp.returncode
で実行結果が取得できるので便利です。
Author And Source
この問題について(CUIでTTS(Text-To-Speach)を実行する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/matz1ppei/items/6237528dedb0df19904e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .