Ticket #30704

Open Date: 2013-02-08 22:23

Last Update: 2014-02-13 17:53

Open JTalk 1.07 への移行

Reporter:nishimotoOwner:nishimoto
Priority:5 - MediumMileStone:2014.1jp (closed)
Type:Feature RequestsSeverity:5 - Medium
Component:音声合成Status:Closed
ResolutionFixed

Details

NVDA 2012.3.jp は Open JTalk 1.05 ベースの JTalk 音声エンジンを提供しています。

2012年12月に Open JTalk 1.06 が公開されたので、移行を検討しますが、点訳エンジンのテキスト解析も JTalk に依存しているので、時間をかけて行いたいと思います。

http://open-jtalk.sourceforge.net/

2013年12月25日:ターゲットを 1.06 から 1.07 に更新しました。

Attachment File

Attachment File ListNo attachments
Add New attachment
Add attachment filesPlease login to add new attachment

Ticket History - 3/13 Histories [Show all old Histories]

2013-02-08 22:23 Updated by: nishimoto

  • New Ticket "Open JTalk 1.06 への移行" created

2013-02-11 13:10 Updated by: nishimoto

Comment

Open JTalk 1.06 では音響モデルのファイル形式が変更されました。

MMDAgent はまだ Open JTalk 1.05 ベースのままなので、いままで提供していた mei の話者データがこのままでは使用できません。

新しいファイル形式は複数のファイルを一つの .htsvoice にまとめています。また、内部のバイナリデータがビッグエンディアンからリトルエンディアンに変更されています。

ツールを自作してファイル変換してみたのですが、うまく動作しないため、エンディアン以外にも変更が必要と思われます。

引き続き調査します。

2013-02-11 18:37 Updated by: masakjm

Comment

マーチン@まほろば です。

以下のサイトに、takayanさんが、変換ツールをアップしてくれています。

http://neu101.seesaa.net/article/316259910.html

まだ使ってみてはいませんが、参考にならないでしょうか。

2013-02-11 19:01 Updated by: nishimoto

Comment

ご教示ありがとうございます。

MMDAgent_Example-1.3.1 の mei_normal を htsvconv002 で変換して Open JTalk 1.06 で使えることを確認できました。

2013-12-25 14:49 Updated by: nishimoto

  • Owner Update from (None) to nishimoto
  • Component Update from (None) to 音声合成
  • Details Updated
  • Summary Updated

Comment

Open JTalk 1.07 と MMDAgent 1.4 がリリースされました。

http://open-jtalk.sourceforge.net/

http://www.mmdagent.jp/

Open JTalk 1.06 用の話者モデル mei が MMDAgent で提供されなかったため(非公式な対応方法はあったのですが) Open JTalk 1.06 へのアップデートを見送っていました。

MMDAgent と合わせて調査して、JTalk のアップデートを再検討します。

これまで使っていた旧バージョンの話者モデル 16KHz 音声の lite も提供できたほうがよいので、やはり話者モデルフォーマットの変換は何かしら必要かも知れません。

2013-12-26 11:25 Updated by: nishimoto

Comment

takayanさんの htsvconv002 を以下のように修正すれば、いままで使ってきた lite の話者モデル(サンプリングレートが 16KHz だったときの Open JTalk 用の m001 の旧モデル)を、最新の htsvoice フォーマットに変換できて、 Open JTalk 1.07 で動かせることを確認しました。

スペックの低いマシンで 48KHz の JTalk はやはり重いため、この方法で今後も lite をサポートしたいと思います。

diff --git a/Program.cs b/Program.cs
index 4ac87d3..d70979b 100644
--- a/Program.cs
+++ b/Program.cs
@@ -7,8 +7,8 @@ using System.Collections.Generic;
 public class HTSVoiceConverter
 {
     // global const
-    private static string[] stream_type = { "MCP", "LF0", "LPF" };
-    private static string[] stream_name = { "mgc", "lf0", "lpf" };
+    private static string[] stream_type = { "MCP", "LF0" /*, "LPF" */ };
+    private static string[] stream_name = { "mgc", "lf0" /*, "lpf" */ };
     private static string fullcontext_format = "HTS_TTS_JPN";
     private static string hts_voice_version = "1.0";
     private static string fullcontext_version = "1.0";

config.txt

SAMPLING_FREQUENCY=16000
FRAME_PERIOD=80
ALPHA=0.42

2014-01-01 11:45 Updated by: nishimoto

Comment

NVDA 日本語版の JTalk ドライバーを Open JTalk 1.07 に合わせて書き直した作業の成果を python-jtalk として独立させることにしました。

https://bitbucket.org/nishimotz/python-jtalk/

この実装は Open JTalk に合わせて(NVDA のライセンスと矛盾しない)修正BSDライセンスで公開します。

開発者向けのドキュメント整備、Windows 以外の環境でのビルドや動作確認も予定しています。

NVDA 日本語チームの成果を他のプロジェクトで活用しやすくすることで、 Python から Open JTalk を利用する開発者が増えることを期待しています。

いままで Open JTalk を安定させて動かすため、また NVDA が必要とする機能を実装するために Open JTalk と HTS Engine API にいろいろなパッチをあててきましたが、そのために Open JTalk オリジナル版の更新を簡単に取り込むことができなくなっていました。

Open JTalk がいままでリリースを重ねて改良が進んだことをふまえて、今後 NVDA 日本語版の開発を引き継いでくれる人が(もし見つかったとしても)苦労しないように、オリジナルのソースをなるべく書き換えない方針をとりたいと考えています。

wav ファイルの出力やオーディオデバイス制御は pyaudio ライブラリに依存しています。

今日公開したソースは、フレームシフトの変更で速度を変える処理まで実装しています。 おそらく NVDA の音声ドライバーを提供するにあたって「高さ」と「抑揚」の変更を実装する必要があり、何らかのパッチが必要になるのですが、前述の方針で引き続き検討します。

2014-01-09 18:44 Updated by: nishimoto

  • Milestone Update from (None) to 2014.1jp (closed)
  • Resolution Update from None to Fixed

Comment

ブランチ jtalk107 での作業がまとまったので、テスト版を作りました。

https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140109.exe

このバージョンには jtalk と jtalk107 の2種類の日本語音声エンジンがあり、 テキスト解析辞書は共通です(更新していません)が、jtalk1.07 ドライバーは JTalk のコアライブラリを Open JTalk 1.07 ベースに差し替えて、 話者モデルも新しいフォーマットのデータを採用しました。

抑揚と高さをサポートするために nmake の中でパッチをあてる方法を採用しました。 このパッチは前述コメントの python-jtalk レポジトリにありますが、 いずれ git のサブモジュールとして統合したいと思います。

このテスト版で JTalk107 ドライバーを評価していただき、問題がなさそうなら、 現在の JTalk ドライバーは新しいドライバーで置き換える予定です。

単語によってすこしイントネーションが変わっているような気がしますが、 まだテキスト解析辞書を Open JTalk 1.07 ベースに置き換えていないので、 今後もイントネーション処理は変わる可能性があります。

2014-01-09 18:59 Updated by: nishimoto

Comment

残念ながら m001 で長文を読み上げるとおかしくなる不具合が直っていないので、やはり jpcommon_label.c にパッチをあてることを検討します。

本件については takayanの雑記帳 でも指摘されています。

http://neu101.seesaa.net/article/384051747.html

2014-01-09 20:59 Updated by: nishimoto

Comment

ブランチ jtalk107 のテスト版ですが、長文の読み上げ不具合修正版 jpbeta140109a をビルドしました。

https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140109a.exe

音声エンジンのコアライブラリ libopenjtalk.dll は nvdajp レポジトリにコミットされていませんが、最新の python-jtalk レポジトリ(jpcommon_label.c にパッチをあてる処理を追加)で build.cmd を実行した結果になっています。

これはいずれ miscdep のサブモジュールとして統合する予定です。

2014-01-16 19:32 Updated by: nishimoto

Comment

JTalk ドライバーを 1.07 版に入れ替えて python-jtalk をサブモジュールとして統合しました。

To ssh://git@bitbucket.org/nvdajp/nvdajp.git
   5046598..9e83fd3  jtalk107 -> jtalk107

サブモジュールの中にさらにサブモジュールがある場合の操作:

git submodule update --init --recursive

が必要です。

2014-01-16 20:49 Updated by: nishimoto

Comment

jpbranch にマージしました。

NVDA日本語テスト版 jpbeta140116

https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140116.exe

前回のテスト版で一時的に追加した jtalk107 ドライバーは削除されました。 JTalk ドライバーが新しいバージョンのドライバーです。

以下の課題が残っています。

  • 不要になった過去のバージョンのファイルのクリーンアップ
  • Open JTalk 1.07 に含まれている mecab を Windows でビルドして UTF-8 の辞書をコンパイルしようとすると、エラーになる。そのため、mecab の辞書コンパイルに必要な Open JTalk 1.05 のソースの一部を残した状態になっている。

2014-02-13 17:53 Updated by: nishimoto

  • Status Update from Open to Closed
  • Ticket Close date is changed to 2014-02-13 17:53

Comment

旧バージョンのファイル(下記)を nvdajpmiscdep から削除しました。

_jtalk_core.py
_nvdajp_jtalk.py
_nvdajp_predic.py

Add Comment/Update #30704 (Open JTalk 1.07 への移行)

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login