Skip to content

h7ga40/HTS_Engine_GR-MANGO

Folders and files

NameName
Last commit message
Last commit date
Apr 29, 2021
Jul 13, 2021
Apr 29, 2021
Jul 13, 2021
Apr 17, 2021
Apr 17, 2021
Apr 17, 2021
Apr 17, 2021
Apr 18, 2021
Apr 17, 2021
Apr 17, 2021
Apr 17, 2021
Apr 29, 2021
Apr 25, 2021
Apr 17, 2021
Jul 13, 2021

Repository files navigation

OpenJTalk for GR-MANGO

OSSの音声合成ソフトOpenJTalkのエンジンhts_engine APIGR-MANGOで動かしたサンプルプログラム。 (その後、OpenJTalkも組込みました。)

MbedライブラリとMbed Library for GR-Boards mbed-gr-libsを使用し、SSIF loop back sampleを改造して作りました。

!注意!

RZ/A2Mに関するテクニカルアップデートによりOctaRAMは8MByteまでしか使えてませんでした。

ビルド方法

ビルドにはe² studioを使用します。

  • e2 studioを起動

    e2 studioを起動

  • 「プロジェクトをインポート…」をクリック

    プロジェクトをインポートをクリック

  • 「プロジェクトをワークスペースへ」を選択して「次へ」

    プロジェクトをワークスペースへ

  • ダウンロードしたzipフィルを選択して「終了」

    e2 studioを起動

  • ビルド

    左領域の「app_hts」を選択して、上部のトンカチボタンでビルドします。

  • プロジェクト参照

    ビルドはMbedが含まれるため時間がかかるが、ライブラリとなっているので、アプリ部分「app_hts」の変更であれば、すぐに終わるはず。

    ライブラリのソースを変えていないのに再ビルドが行われる場合は、プロジェクト参照を変更してください。

    プロジェクト参照

    手順は「app_hts」の右クリックメニューで「プロパティ」を選択、右領域の「プロジェクト参照」を選択して、再ビルドが行われるプロジェクトのチェックを外してください。

  • プロジェクト構成について

    Mbedは以下のプロジェクトに分割してあります。「mbed_os」「mbed_os_cpp」「mbed_os_lwipstack」「mbed_os_mbedtls」「mbed_os_nanostack」「mbed_os_nfc」。

    これは、1つのプロジェクトにするとオブジェクトファイルが多すぎて、リンクコマンドが失敗してしまうためです。

    各プロジェクトに*.cや*.cppを割り振っていますが、*.hはすべて「mbed_os」に置いてあります。ちょっと雑なファイル構成です。

実行方法

マイクロSDカードに音響モデル(htsvoiceファイル)を入れる必要があります。

SDカードのファイル 提供元
nitech_jp_atr503_m001.htsvoice OpenJTalk
mei\mei_happy.htsvoice MMDAgent
mei\mei_normal.htsvoice MMDAgent
mei\mei_sad.htsvoice MMDAgent
dic\* OpenJTalk

htsvoiceファイルは下記のサイトからダウンロードしてください。

  • OpenJTalk

    OpenJTalkから、次のようにフォルダ辿って「HTS voice」→「hts_voice_nitech_jp_atr503_m001-1.05」、「hts_voice_nitech_jp_atr503_m001-1.05.tar.gz」をダウンロードします。 「nitech_jp_atr503_m001.htsvoice」をSDカードのルートフォルダに入れます。

    OpenJTalkを使う場合は、「Dictionary」→「open_jtalk_dic-1.11」と辿って、「open_jtalk_dic_utf_8-1.11.tar.gz」をダウンロードします。 「open_jtalk_dic_utf_8-1.11」フォルダの中身をSDカードの「dir」フォルダに入れます。

  • MMDAgent

    MMDAgentから、「MMDAgent "Sample Script"」にある「Source code」をクリックしてダウンロードします。 「Voice\mei」フォルダをSDカードの「mei」フォルダに入れます。

参考サイト

デバッグ方法

RenesasさんのMbedのWikiに書いてある手順で、GR-MANGOだけでデバッグができます。

「app_hts.launch」を用意したので参考サイトの手順「New Configuration」を行わず「app_hts」を選択でも可能です。

変更点

Qiitaにも、変更内容の一部を詳しく書きました。

HTS Engineの省メモリ化

  • 「double」型を「float」型に変更。
  • シンセサイザの各ステップで、参照しなくなった前ステップのメモリを解放。
  • シンセサイザの最終ステップ「HTS_gstream.c」で、合成したPCMデータを全てをメモリに置かず、部分的なバッファのサイズに変更。
  • malloc/freeでOctaRAMを使用するよう「HTS_calloc」「HTS_free」の実装を変更。

MBedのGR-MANGOポーティング部

  • 標準のブートローダーはOctaRAMが8MBになっているため、「mbed_sf_boot.c」で16MBになるよう変更。
  • スタックが足らなかったため「mbed_config.h」の「MBED_CONF_RTOS_MAIN_THREAD_STACK_SIZE」を「16384」に変更。

SSIF loop back sample

  • HTS Engineの呼び出しを追加。
  • マイクからの入力では無く、HTS Engineからの合成結果で音声出力するよう変更。

OpenJTalkのmmap処理変更

  • mmapは使えないので、ファイルを全てメモリに読み込むようになっているが、sys.dicファイルはサイズが100MByte近くあるので、値が必要な場合は随時ファイルから読み出すように変更。

ライセンス

ライセンスはそれぞのをファイルにある記載を確認してください。

変更部分があるので、注意してください。

変更内容については、自由に使ってください。