途中でやる気をなくしてしまったプロジェクト
DEMO : https://y52en.github.io/aquestalk.js
TODO
- 使い方を書く
- f1以外の声を使えるようにする
- そのためにpeをparseして諸々する
- リファクタリング!!!!!
- エラー表示をする(今はエラーが出ても何も表示されない)
やる気をなくした最大の原因は、音声の生成が非常に遅いこと
例えば、こんにちわ、せかい
をしゃべらせるだけで自分の環境で0.25秒かかる(スマホはもっとかかる)
ここから漢字や英語をひらがなに変換する処理などを加えると、さらに遅くなるのは目に見えている
x86エミュレータで手軽に使えるwasmライブラリがあればもう少し早くなるのかもしれない
パフォーマンス改善のためにやったこと
- strncmpが非常に頻繁に呼ばれていて、hookで処理をしていたが、hookの処理は重くボトルネックになっていたので、strncmpのアセンブリを埋めこみエミュレータ内で処理させた(かなり効果があった)
- Unicorn.jsのビルドオプションを-O3にした(気持ち0.01秒ぐらいしか早くなっていない、なんなら変わってないかもしれない)
今後考えられること
- 一文づつ分割してWeb Workersで並列化する
- wasm製のx86エミュレータを使う
- Unicorn.jsをwasm化しようとしたが、自分の力では無理だった
ここから完成したとき用のreadme
AquesTalkをunicornで雑に諸々エミュレートしてブラウザーで使えるようにしたものです。
⚠注意: aquesTalkの著作権は株式会社アクエストに帰属します。詳しいライセンスはAqLicence.txtを参照してください。(zip内に含まれています)
まだ
npm linkがいります
Unicorn.jsは自前でビルドする必要があります(cdnやreleaseのものは古く、バグがあるため持ってきてもそのままでは動きません)
あとは特筆することはないはず
- ライセンスは?
- aquesTalk.jsのaquesTalk部分はAquesTalkのライセンスに従います。
- このリポジトリのコードはGPLライセンスです。(unicorn.jsがGPLのため)
- なぜzipファイルでaquesTalkを読み込んでいるの?
- AqLicence.txtによれば、dllファイル単体での再配布は禁止されているようです。それを回避するためにzipファイルで配布しています。
- 参考: https://www.a-quest.com/archive/manual/prog_guide_linux.pdf