LoginSignup
12
15

More than 3 years have passed since last update.

Pythonでゆっくりボイスを作ろう

Last updated at Posted at 2020-08-25

PythonからSofTalkを利用したいのです

環境

  • Python 3.8.3
  • SofTalk 1.93.46
  • Windows10

準備

SofTalkをダウンロードしておきましょう
以下のページから最新バージョンをダウンロードしておいてください
https://w.atwiki.jp/softalk/pages/15.html

コマンドラインからSofTalkを使ってみる

同梱されている help.chm にも記載されていますが、コマンドラインからSoftalkを利用する方法があります
DLしたzipを解凍して

start ..\softalk\Softalk.exe

これでSofTalk本体を起動するとともに、以下の引数が利用可能です

SofTalk引数早見表

ゆっくりボイスでは利用できない(Aquestalk10でのみ利用可能)な引数は除いています

種類 効果 詳細 備考
/NM: 文字列 声指定 声を名前で指定 例)/NM:女性01
/M: 0~? 声を番号で指定
/PR: 文字列 プリセット指定 プリセットを名前で指定 例)/PR:初期設定
/N: 0~? プリセットを番号で指定
/O: 0~300 音程 声の音程 低くすると読む速度が落ちるだけなので、速度との違いがあまりないかも
/P: 読み 読み追加 読み(ひらがな),単語,全/半角を区別(True/False) 例)/P:てすと,Test,True
登録済みの単語の場合は以前の単語を更新
/Q: 0~5 読み上げ方 0:平仮名変換無・抑揚無 選択中のライブラリに対して設定
1:平仮名変換無・抑揚有
2:平仮名変換有・抑揚無
3:平仮名変換有・抑揚有
4:平仮名変換有・抑揚無・空耳有
5:平仮名変換有・抑揚有・唄詠有
/R: 録音 読み上げた文章の録音 例)/R:c:\test.wav
/S: 1~300 速度 読み上げの速度
/T: 7~11 ライブラリ指定 ライブラリ(エンジン)の指定 0でゆっくり霊夢、1でゆっくり魔理沙ボイス
7:AquesTalk
8:SAPI
9:Speech Platform
10:AquesTalk2
11:AquesTalk10
/U: 0~? 声指定 ライブラリ(エンジン)から声を指定 選択中のライブラリに対して設定
/V: 0~100 音量 声の音量
/W: 文章 文章 読み上げたい文章 このオプション以降の文字は全て文章とみなす
/X: 0~1 画面表示 0:表示 1:非表示 起動時のみ有効、終了する場合は/close
/Z: パス XML出力 指定可能な声をXML形式で出力

/Wの位置にさえ注意すれば特に難しいことはなさそうです

Pythonから実行してみる

毎回コマンドラインから入力するのは面倒です
面倒なことはPythonにやらせましょう

Pythonからコマンドを実行したい時は、subprocessモジュール1を利用します

本記事を書くまで知らなかったのですが、Python3.5以降では subprocess.call() ではなく subprocess.run() を利用すべきだそうです

サブプロセスを起動するために推奨される方法は、すべての用法を扱える run() 関数を使用することです。より高度な用法では下層の Popen インターフェースを直接使用することもできます。
run() 関数は Python 3.5 で追加されました; 過去のバージョンとの互換性の維持が必要な場合は、古い高水準 API 節をご覧ください。

コードを書いてみる

yukkuri
├yukkuritest.py
└softalk(解凍フォルダ)
 └ SofTalk.exe

こんな感じのディレクトリ構成を想定します

コマンドをスペースごとにリストにしてrun()関数に渡せばOK
…と思っていたのですが、どうやら一度リストを半角スペース入りで結合しなければいけない模様
というわけで、簡単に書くと以下のようになります

yukkuritest.py
import os
import subprocess

os.chdir(os.path.dirname(os.path.abspath(__file__)))

_start = "start SofTalk.exeのPath"
_speed = "/S:120"
_word = "/W:おはようございます"

_command = [_start, _speed, _word]

subprocess.run(' '.join(_command), shell=True)


これでゆっくりボイスをPythonから出力できるようになりました


  1. subprocess --- サブプロセス管理
    https://docs.python.org/ja/3/library/subprocess.html 

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15