43
こここここ こここここここここここ こここ つつ Android つつつ 2015 つ 9 つ LT つつ つつ ~@ dego_96 2015/09/26

つ部 2015 09 こわくないネイティブライブラリの使い方

Embed Size (px)

Citation preview

Page 1: つ部 2015 09 こわくないネイティブライブラリの使い方

こわくないネイティブライブラリの

使い方

つ部 Android 勉強会 2015 年 9 月 LT 大会

で~ご@ dego_96 2015/09/26

Page 2: つ部 2015 09 こわくないネイティブライブラリの使い方

はじめましての人ははじめまして

Page 3: つ部 2015 09 こわくないネイティブライブラリの使い方

お久しぶりの人はお久しぶりです

Page 4: つ部 2015 09 こわくないネイティブライブラリの使い方

そうでない人はちわっす ( 。・ ω ・ ) ノ゙

Page 5: つ部 2015 09 こわくないネイティブライブラリの使い方

で~ごです

Page 6: つ部 2015 09 こわくないネイティブライブラリの使い方

自己紹介

名前 : で~ご @dego_96仕事 : なんちゃって SE

Page 7: つ部 2015 09 こわくないネイティブライブラリの使い方

自己紹介

名前 : で~ご @dego_96仕事 : なんちゃって SE

Page 8: つ部 2015 09 こわくないネイティブライブラリの使い方

自己紹介

名前 : で~ご @dego_96仕事 : なんちゃって SE

Page 9: つ部 2015 09 こわくないネイティブライブラリの使い方

自己紹介

名前 : で~ご @dego_96仕事 : なんちゃって SE

Page 10: つ部 2015 09 こわくないネイティブライブラリの使い方

今日のおはなし

Page 11: つ部 2015 09 こわくないネイティブライブラリの使い方

以前のつ部で…

Page 12: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 13: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 14: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 15: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 16: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 17: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 18: つ部 2015 09 こわくないネイティブライブラリの使い方
Page 19: つ部 2015 09 こわくないネイティブライブラリの使い方

まだしゃべれなかった

Page 20: つ部 2015 09 こわくないネイティブライブラリの使い方

で、

Page 21: つ部 2015 09 こわくないネイティブライブラリの使い方

今は簡単にしゃべらせる方法が

わかったので

Page 22: つ部 2015 09 こわくないネイティブライブラリの使い方

そのお話です。

Page 23: つ部 2015 09 こわくないネイティブライブラリの使い方

① OpenJTalk を使ってみる

② Android 用にクロスコンパイル

③ Android アプリへ組み込む

今回やったこと

Page 24: つ部 2015 09 こわくないネイティブライブラリの使い方

① OpenJTalk を使ってみる

Page 25: つ部 2015 09 こわくないネイティブライブラリの使い方

OpenJTalk とは

入力された日本語テキストに基づいて自由な音声を生成する HMM テキスト音声合成システム

名古屋工業大学の徳田・李研究室で開発

Page 26: つ部 2015 09 こわくないネイティブライブラリの使い方

OpenJTalk のコンパイル

ソースコード ・ OpenJTalk v1.07 ・ HTS_engine v1.08

コンパイル $ ./configure $ make

※ コンパイル方法の詳細は省略

Page 27: つ部 2015 09 こわくないネイティブライブラリの使い方

OpenJTalk の実行

辞書や音声パラメータなどを指定して実行

実行コマンドの例$ ./bin/open_jtalk -x ./open_jtalk_dic_utf_8-1.07 –m ./voice/mei_normal.htsvoice –ow out.wav ./test.txt

※ 詳細は省略

Page 28: つ部 2015 09 こわくないネイティブライブラリの使い方

② Android 用に  クロスコンパイル

Page 29: つ部 2015 09 こわくないネイティブライブラリの使い方

Android で C ライブラリを使う方法

(1) Android.mk を書く(2) ソースコードを修正して

共有ライブラリ化(3) バイナリをそのままアプリに入れる

Page 30: つ部 2015 09 こわくないネイティブライブラリの使い方

Android で C ライブラリを使う方法

(1) Android.mk を書く(2) ソースコードを修正して

共有ライブラリ化(3) バイナリをそのままアプリに入れる

Page 31: つ部 2015 09 こわくないネイティブライブラリの使い方

クロスコンパイルでやること

(1) NDK を準備(2) toolchain の設定(3) 環境変数の設定(コンパイラのパスなど)(4) arm-linux を指定して ./configure(5) make

※ OpenJTalk の Makefile は最後にバイナリ実行するため、  一時的に x86 でビルドしたファイルをコピー

Page 32: つ部 2015 09 こわくないネイティブライブラリの使い方

② Android 用に  クロスコンパイル

Page 33: つ部 2015 09 こわくないネイティブライブラリの使い方

https://goo.gl/5HkQDR

Page 34: つ部 2015 09 こわくないネイティブライブラリの使い方

Android アプリに組み込む

assets フォルダに OpenJTalk 一式を入れる⇒ 1M を超えるサイズなので zip 圧縮⇒ 初回起動時に解凍

Page 35: つ部 2015 09 こわくないネイティブライブラリの使い方

Android アプリに組み込む

assets フォルダに OpenJTalk 一式を入れる⇒ 1M を超えるサイズなので zip 圧縮⇒ 初回起動時に解凍

解凍先は/data/data/ パッケージ名 /

Page 36: つ部 2015 09 こわくないネイティブライブラリの使い方

ここで予想外の事態が…

Page 37: つ部 2015 09 こわくないネイティブライブラリの使い方

Zip ファイルのサイズ25M

Page 38: つ部 2015 09 こわくないネイティブライブラリの使い方

解凍後のサイズ

82M

Page 39: つ部 2015 09 こわくないネイティブライブラリの使い方

トータルのアプリサイズ

110M

Page 40: つ部 2015 09 こわくないネイティブライブラリの使い方

でかい… orz

Page 41: つ部 2015 09 こわくないネイティブライブラリの使い方

Android アプリに組み込む

解凍したバイナリを ProcessBuilder でJava から実行

コマンドの実験やテストは PC でできるので楽

ProcessBuilder processBuilder = new ProcessBuilder(command);processBuilder.redirectErrorStream();Process process = processBuilder.start();

※ command は String 配列

Page 42: つ部 2015 09 こわくないネイティブライブラリの使い方

動かしてみる

Page 43: つ部 2015 09 こわくないネイティブライブラリの使い方

致命的な問題ががが