View
427
Download
2
Category
Preview:
Citation preview
こわくないネイティブライブラリの
使い方
つ部 Android 勉強会 2015 年 9 月 LT 大会
で~ご@ dego_96 2015/09/26
はじめましての人ははじめまして
お久しぶりの人はお久しぶりです
そうでない人はちわっす ( 。・ ω ・ ) ノ゙
で~ごです
自己紹介
名前 : で~ご @dego_96仕事 : なんちゃって SE
自己紹介
名前 : で~ご @dego_96仕事 : なんちゃって SE
自己紹介
名前 : で~ご @dego_96仕事 : なんちゃって SE
自己紹介
名前 : で~ご @dego_96仕事 : なんちゃって SE
今日のおはなし
以前のつ部で…
まだしゃべれなかった
で、
今は簡単にしゃべらせる方法が
わかったので
そのお話です。
① OpenJTalk を使ってみる
② Android 用にクロスコンパイル
③ Android アプリへ組み込む
今回やったこと
① OpenJTalk を使ってみる
OpenJTalk とは
入力された日本語テキストに基づいて自由な音声を生成する HMM テキスト音声合成システム
名古屋工業大学の徳田・李研究室で開発
OpenJTalk のコンパイル
ソースコード ・ OpenJTalk v1.07 ・ HTS_engine v1.08
コンパイル $ ./configure $ make
※ コンパイル方法の詳細は省略
OpenJTalk の実行
辞書や音声パラメータなどを指定して実行
実行コマンドの例$ ./bin/open_jtalk -x ./open_jtalk_dic_utf_8-1.07 –m ./voice/mei_normal.htsvoice –ow out.wav ./test.txt
※ 詳細は省略
② Android 用に クロスコンパイル
Android で C ライブラリを使う方法
(1) Android.mk を書く(2) ソースコードを修正して
共有ライブラリ化(3) バイナリをそのままアプリに入れる
Android で C ライブラリを使う方法
(1) Android.mk を書く(2) ソースコードを修正して
共有ライブラリ化(3) バイナリをそのままアプリに入れる
クロスコンパイルでやること
(1) NDK を準備(2) toolchain の設定(3) 環境変数の設定(コンパイラのパスなど)(4) arm-linux を指定して ./configure(5) make
※ OpenJTalk の Makefile は最後にバイナリ実行するため、 一時的に x86 でビルドしたファイルをコピー
② Android 用に クロスコンパイル
https://goo.gl/5HkQDR
Android アプリに組み込む
assets フォルダに OpenJTalk 一式を入れる⇒ 1M を超えるサイズなので zip 圧縮⇒ 初回起動時に解凍
Android アプリに組み込む
assets フォルダに OpenJTalk 一式を入れる⇒ 1M を超えるサイズなので zip 圧縮⇒ 初回起動時に解凍
解凍先は/data/data/ パッケージ名 /
ここで予想外の事態が…
Zip ファイルのサイズ25M
解凍後のサイズ
82M
トータルのアプリサイズ
110M
でかい… orz
Android アプリに組み込む
解凍したバイナリを ProcessBuilder でJava から実行
コマンドの実験やテストは PC でできるので楽
ProcessBuilder processBuilder = new ProcessBuilder(command);processBuilder.redirectErrorStream();Process process = processBuilder.start();
※ command は String 配列
動かしてみる
致命的な問題ががが
Recommended