自動 HANASU ツール「唄詠(うたよみ)」では、Ver 6.14 現在、実行形式のファイル(EXE/DLL)が 6 個もある。わかりやすさから言えば 1 個にまとまっている方が良いのだが、諸事情によりそうなっていない。今回のマニアックスでは、それぞれの実行形式ファイルが何をしているか、解説する。
同梱されている 6 個の実行形式ファイルをフォルダ・アルファベット順に列挙すると、
となる。それぞれのファイルについて以下で説明する。
唄詠本体は、UTAU 音源をシステムに登録するための UI を提供する。登録されている音源の一覧表示、音源の新規登録、修正、削除。
また、唄詠全体の動作に関わる設定も行う。
音源をシステムに登録するには、管理者権限で動作している必要がある。普段から管理者権限でログインしているユーザーの場合は問題ないのだが、一般権限でログインしているユーザーの場合、唄詠本体からでは音源の登録ができない。唄詠本体がヘルパーを管理者権限で起動し(昇格)、管理者権限のヘルパーが音源を登録するという流れになっている。
唄詠本体を常に管理者権限で起動させる設定にしておけばヘルパーは不要なのだが、起動する度に管理者パスワードを入力するというのは煩雑なので、やめている。
また、管理者権限が必要になったときに、唄詠本体が唄詠本体自身を管理者権限で起動するという方法もあると思うが、処理が複雑になりそうだったので、やめている。
結果として、唄詠本体とヘルパーを分離する方式に落ち着いた。
ヘルパーはバックグラウンドで動作するためユーザーからは見えずないが、一度起動されると、唄詠本体が終了するまで常駐している。
なお、ユーザーが間違ってヘルパーを起動した場合、ヘルパーは終了し、代わりに唄詠本体を起動するようになっている。
しかしながら、このファイルは実質ダミーファイルで、次の SAPI エンジンヘルパーが実際の処理を行っている。
このファイルがあるのは、残念ながら俺の技術力が低いせいだ。
唄詠は C++Builder で開発しているが、C++Builder で SAPI エンジン(というか COM コンポーネント)を作るやり方が分からなかった。
そこで、Visual Studio で SAPI エンジンの殻だけ作り、中身の SAPI エンジンヘルパーを C++Builder で作成している。
C++Builder での SAPI エンジンの作り方をご存じの方がいらっしゃいましたら教えていただけると有り難いです。
テキストスピーチソフトが何かする度に呼びだされる。声を選択したり、文章をしゃべらせたりといった際に、SAPI エンジンとしての決まり事に従って作業を行う。
実際の音声合成は調声プラグインが行うので、主な作業は、システム側とプラグイン側の橋渡しとしての調整だ。
唄詠はいくつかの文章形式を扱えるが、システム側から受け取った形式を変換・統一してプラグインに渡すということもやっている。
Ver 6.14 現在、標準で用意されている調声プラグインは 1 つのみであるが、ユーザーが公開されているプラグインを追加することもできる。また、今後、標準で用意されているプラグインが増える可能性もある。
調声をプラグインでまかなうことにしたのは、様々な調声をユーザーが選べるようにするためだ。詳しくは前回の唄詠マニアックスを参照して欲しい。
この自動更新ツールは唄詠専用というわけではなく、さまざまなアプリケーションで使えるものだ。単体公開もしている。
同梱されている 6 個の実行形式ファイルをフォルダ・アルファベット順に列挙すると、
Updater.exe | 自動更新ツール |
---|---|
UtaYomi.exe | 唄詠本体 |
UtaYomiEngine.dll | SAPI エンジン |
UtaYomiEngineHelper.dll | SAPI エンジンヘルパー |
UtaYomiHelper.exe | 唄詠本体のヘルパー |
Plugins\Default.dll | 調声プラグイン |
唄詠本体(UtaYomi.exe)
何をもって本体と呼ぶのかは実は難しい問題なのだが、「ユーザーが意識して使うファイル」ということで本体としている。唄詠のヘルプでファイル名に言及している実行形式ファイルは UtaYomi.exe のみであり、逆に、これ以外のファイルは、ユーザーが直接起動しようとしても起動できない。唄詠本体は、UTAU 音源をシステムに登録するための UI を提供する。登録されている音源の一覧表示、音源の新規登録、修正、削除。
また、唄詠全体の動作に関わる設定も行う。
唄詠本体のヘルパー(UtaYomiHelper.exe)
唄詠本体から必要に応じて自動的に起動される、ヘルパーアプリケーション。音源の新規登録・修正・削除作業を実際に行うのがこのヘルパー。音源をシステムに登録するには、管理者権限で動作している必要がある。普段から管理者権限でログインしているユーザーの場合は問題ないのだが、一般権限でログインしているユーザーの場合、唄詠本体からでは音源の登録ができない。唄詠本体がヘルパーを管理者権限で起動し(昇格)、管理者権限のヘルパーが音源を登録するという流れになっている。
唄詠本体を常に管理者権限で起動させる設定にしておけばヘルパーは不要なのだが、起動する度に管理者パスワードを入力するというのは煩雑なので、やめている。
また、管理者権限が必要になったときに、唄詠本体が唄詠本体自身を管理者権限で起動するという方法もあると思うが、処理が複雑になりそうだったので、やめている。
結果として、唄詠本体とヘルパーを分離する方式に落ち着いた。
ヘルパーはバックグラウンドで動作するためユーザーからは見えずないが、一度起動されると、唄詠本体が終了するまで常駐している。
なお、ユーザーが間違ってヘルパーを起動した場合、ヘルパーは終了し、代わりに唄詠本体を起動するようになっている。
SAPI エンジン(UtaYomiEngine.dll)
システム側から「SAPI 用音源」として認識されているのがこのファイル。テキストスピーチソフトで唄詠の声を選択し、文章をしゃべらせると、このファイルが実行される。しかしながら、このファイルは実質ダミーファイルで、次の SAPI エンジンヘルパーが実際の処理を行っている。
このファイルがあるのは、残念ながら俺の技術力が低いせいだ。
唄詠は C++Builder で開発しているが、C++Builder で SAPI エンジン(というか COM コンポーネント)を作るやり方が分からなかった。
そこで、Visual Studio で SAPI エンジンの殻だけ作り、中身の SAPI エンジンヘルパーを C++Builder で作成している。
C++Builder での SAPI エンジンの作り方をご存じの方がいらっしゃいましたら教えていただけると有り難いです。
SAPI エンジンヘルパー(UtaYomiEngineHelper.dll)
実質の SAPI エンジン。テキストスピーチソフトが何かする度に呼びだされる。声を選択したり、文章をしゃべらせたりといった際に、SAPI エンジンとしての決まり事に従って作業を行う。
実際の音声合成は調声プラグインが行うので、主な作業は、システム側とプラグイン側の橋渡しとしての調整だ。
唄詠はいくつかの文章形式を扱えるが、システム側から受け取った形式を変換・統一してプラグインに渡すということもやっている。
調声プラグイン(Plugins\Default.dll)
Plugins フォルダにある調声プラグインは、文章を音声に変換する音声合成を行う。Ver 6.14 現在、標準で用意されている調声プラグインは 1 つのみであるが、ユーザーが公開されているプラグインを追加することもできる。また、今後、標準で用意されているプラグインが増える可能性もある。
調声をプラグインでまかなうことにしたのは、様々な調声をユーザーが選べるようにするためだ。詳しくは前回の唄詠マニアックスを参照して欲しい。
自動更新ツール(Updater.exe)
唄詠には、最新バージョンが公開されたら自動的にバージョンアップする機能があるが、それを実現しているのがこの自動更新ツール。バージョンアップだけではなく、最新情報の表示も行う。この自動更新ツールは唄詠専用というわけではなく、さまざまなアプリケーションで使えるものだ。単体公開もしている。