AqKanji Koe Android Manual

株式会社 アクエスト
httpwwwa
questcom
AqKanjiKoe Android
Manual
概要
本文書は、言語処理ライブラリ AqKanjiKoe Android をアプリケーションに組み込んで使用するためのプログラミ
ングに関しての方法および注意点を示したものです。
AqKanjiKoe は漢字かな混じり文のテキスト情報を AquesTalk用のアクセント付きの音声記号列に変換するラ
イブラリです。
このライブラリと音声合成ライブラリ AquesTalkを使うことにより、動的に変化する様々なテキストからリアルタイ
ムに音声メッセージを生成できるようになります。
特長
・簡単に組み込み可能
テキスト文字列を入力すると音声記号列を返す、シンプルな API
・高速な変換処理
約 " 万字秒の高速な変換処理Win 版で計測)
・高精度な読み・アクセント付与
最大 $" 万語の単語辞書とアクセントルールにより、正確な読みとアクセントを生成
仕様
AqKanjiKoe
ライブラリ形式
so 形式ダイナミックライブラリ (JNI 実装)
各種 ABI に対応 armeabi) armeabi
v+a) arm,-
v.a) mips) mips,-) x.,) x.,0,-
対応 OS
Android 3 API レベル9 以降 4Android 以下では使用できません
入力データ形式
漢字かな混じり文テキスト(Java String)
出力データ形式
AquesTalk音声記号列(Java String
開発環境
Android NDK r7"e
プログラムサイズ
約 7""KByte
辞書サイズ
標準:約7MB(約36万語)、スモール:約5MB(約25万語) ラージ:約13MB(約50万語)
ファイル
ビルド及び実行時に下記のファイルを使用します。
libAqKanjiKoeso : AqKanjiKoe ライブラリの実体(ネイティブコード)
AqKanjiKoejava : libAqKanjiKoeso を Java からアクセスするためのラッパークラス
aq0dic
: 辞書ファイル(複数ファイル
「AqKanjiKoe Android」の実体はネイティブコードで書いてあり、JNI 経由で呼び出しています。そのため、使用す
る環境(ABIに応じたライブラリを使用する必要があります。たとえば、使用端末が ARM CPU の場合は armeabi)
か armeabi
v+a を、Intel CPU の場合は x., などのライブラリを使用します。
任意のアプリケーションを開発するときは、libAqKanjiKoeso と AqKanjiKoejava ファイルを、アプリケーションの
プロジェクトに追加します。Android Studio の環境であれば、プロジェクトディレクトリに、上のファイルを下記のよう
なディレクトリ構造上にディレクトリがなければ作成するコピーすればよいでしょう。
Andorid では FAT
Binaryシングル APKというもので、複数の ABI のライブラリを1つの apk に含めて各種動作環
境に応じたアプリを作成できます。例えば、下記のように jniLibs に armeabi と x., の2つのライブラリを配置してビ
ルドするだけで ARM と Intel CPU の両方に対応したアプリが作成できます。
>appsrcmain?
java
>アプリのソース?
aqkanjikoe
AqKanjiKoejava
jniLibs
armeabi
libAqKanjiKoeso
x.,
>必要に応じて
libAqKanjiKoeso
res
assets
なお、呼び出しの関係は、次のようになります。
4 アプリ ? AqKanjiKoejava ? libAqKanjiKoeso
実行時の辞書ファイルの配置
本ライブラリは、実行時に辞書ファイルをアクセスします。
辞書ファイルは SDK の aq0dic ディレクトリの下にある複数のファイルから構成されています。
辞書ファイルは、apk の中例えば assets)に置いたままで使用ができず、実行時にはローカルファイル領域に配置
する必要があるため、アプリケーションへの実装には若干注意が必要です。
辞書ファイルの実装方法としては、次の つが考えられます。
1.ZIP ファイルを展開して使用する方法
aq0dic 以下のファイルを1つの ZIP ファイルに圧縮して、assets ディレクトリに配置し、パッケージに含まれるように
する。そして、アプリの初回の起動時に、この ZIP ファイルを files フォルダの下に展開する(サンプルアプリはこの
方法を用いています)。
2.辞書データをダウンロードする方法
ネットワーク上に辞書ファイルをアップロードしておき、アプリの初回起動時にネットワーク経由で辞書データをダウ
ンロードして files フォルダの下に配置する。
なお、アプリ開発時には、辞書データをパッケージに含めると転送に時間がかかりデバッグ作業の効率が悪くなる
ので、辞書データはパッケージからはずして、DDMS や adb を利用して手動で辞書ファイルを配置するのも効率的
です。
関数 API
4.1. Android 版 Java ラップクラス
JNI をラップした Java クラスを用いてアクセスします
package aqkanjikoe
Convert
説明
漢字かな交じりのテキストを音声記号列に変換
String Convert String dirDic) String kanjiText
構文
引数
dirDic
辞書のディレクトリを指定。通常、B>app dir?aq0dicB。
kanjiText
入力漢字かな混じり文テキスト文字列
戻り値
音声記号列文字列。最大文字数 -"C,byte。
処理エラーの時はBDERRF>エラーメッセージ?B という文字列を返す。
実装方法
実装方法
次に示すコードは、アプリケーションの起動時に日本語のテキストを AqKanjiKoe ライブラリで音声記号列に変換
して、画面に出力するだけの単純なプログラムです。このプログラムを参照しながら以下に説明します。
package aqkktestaquestG
import
import
import
import
androidappActivityG
androidosBundleG
androidwidgetTextViewG
aqkanjikoeAqKanjiKoeG
public class AqKKTest extends Activity I
44 Called when the activity is first created 4
JOverride
public void onCreateBundle savedInstanceState I
superonCreatesavedInstanceStateG
String kanji K B"73 年、新年明けましておめでとうBG
String dirDic K thisgetFilesDirtoStringG datadata>package name?files
AqKanjiKoe kanjikoe K new AqKanjiKoeG
String koe K kanjikoeConvertdirDic) kanjiG
TextView textView K new TextViewthisG
textViewsetTextB音声記号列:BLkoeG
setContentViewtextViewG
M
M
AqKanjiKoe のクラスをインポートします(, 行目)
AqKanjiKoejava の中を見ればわかりますが、静的メソッドと、通常のメソッドが用意されています。いまのところ、
関数は1つだけなので、どちらを使っても違いはありません。
このサンプルでは、アプリ起動時の onCreateのなかで、AqKanjiKoe のインスタンスを生成しています(7+ 行
目)。
そして、String 文字列を音声記号列に変換します7. 行目。 番目の引数に指定した漢字を含む文字列が、音声
記号列に変換されて返されます。
最初の引数には辞書ファイルのディレクトリパスを指定します。ここでは、datadata>package name?files と
なります。あらかじめ、このディレクトリに SDK に含まれる aq0dic 以下のすべてのファイルをコピーしておく必要が
あります。辞書ファイルの配置場所は任意ですが、ライブラリからアクセスできるようにしておく必要があります。
辞書ファイルの指定誤りなどで変換処理が出来なかった場合には、”DERRF>エラーメッセージ?”の書式でエラー
が返されます。必要に応じてエラー処理を行ってください。
サンプルアプリ
サンプルアプリ
SDK パッケージにはサンプルアプリ AqTkDemo のプロジェクトが含まれています。このアプリは、任意の日本語テ
キストを音声記号に変換して、さらに AquesTalk で音声出力するものです。
なお、サンプルアプリのソースコードライブラリやライブラリのヘッダファイルを除くは、ご自由に改変してご使用
いただけます。
なお、辞書データは、BZIP ファイルを展開して使用する方法Bを用いています。
使用方法
Android Studio の開発環境が構築されていることが前提です。
7 パッケージ内の AqTkDemo フォルダを任意の場所にコピー
Android Studio を起動
3 menu?File?Open でコピーした AqTkDemo フォルダを Open。
(Welcome to のウィンドウの場合は
Open an existing Android Studio ProjectPackage)
- 各種設定ファイルや build が自動的に行われます。
$ Project のツリーは下図のようになります。
, あとは、menu?Run?Run ’app’で実行します。
4 実行時に BDERRFinit dictionaryB が出るときは、AqTkDemo の古いアプリが残っていて新しい辞書が展開され
ない場合があります。インストール前に AqTkDemo アプリを削除しておく必要があります。
辞書サイズ
この SDK には、サイズの異なる 3 種類のシステム辞書が含まれています。
利用の目的に応じて選択してお使いください。D評価版は標準辞書のみF
辞書名
フォルダ
サイズ
見出し語数
標準辞書
aq0dic
約7MB
約36万語
ラージ辞書
aq0dic0large
約 73MB
約 $" 万語
スモール辞書
aq0dic0small
約 $MB
約 $ 万語
ユーザ辞書
この SDK には、ライブラリの動作検証用にサンプルのユーザ辞書aq0userdicが含まれています。
独自の単語を追加する場合は、ユーザ辞書作成ツールGenUserDicexeを用います。
D評価版にユーザ辞書作成ツールは含まれていませんF
GenUserDicexe は Windows アプリのため、Windows 環境で動作させる必要があります。
ユーザ辞書の編集
GenUserDicexe を起動します。
メニュー?ファイル?開く より、付属のサンプルのユーザソース辞書sample0src0userdiccsvを開きます。
D見出し語Fは、単語をすべて全角で指定してください。またアルファベットは、大文字で記述します。
D発音F部分には、その単語の読みとアクセントを指定します。読みは全角カナで記述し、アクセントは「’」半角で
アクセント核声の高さが高→低に変化する部分に指定します。平板アクセントの場合はアクセントは指定しませ
ん。
単語を追加する場合は、D見出し語F、D発音F、D品詞Fを指定して、D追加Fボタンを押下します。
表示されているレコードの内容を修正する場合は、D変更Fボタンを押下します。
表示されているレコードを削除する場合は、D削除Fボタンを押下します。
ユーザ辞書ファイルの生成と配置
ユーザ辞書ファイルの生成と配置
GenUserDicexe で内容を変更した後、一旦、メニュー?ファイル?上書き保存で修正内容を保存します。
その後、所望の辞書サイズを選択して、D生成Fボタンを押下し、出力するユーザ辞書ファイル名を指定します。
以上で、ユーザ辞書ファイルが生成されます。
ユーザ辞書のファイル名は aquserdic とし、ライブラリの実行時にはシステム辞書aqdicbinと同じディレクトリに
配置してください。
コマンドラインによるユーザ辞書ファイルの生成
サンプルのユーザソース辞書sample0src0userdiccsvをエディタ等で開くとわかるとおり、ソース辞書は各行が
見出し語) よみ) 品詞
で構成されています。
したがって、エディタ等を用いてユーザソース辞書を直接編集することができます。
注意点として、見出し語)はすべて全角で指定し、アルファベットは大文字で記述。読みは全角カナで記述し、アク
セントは「’」半角で指定する必要があります。
GenUserDicexe は、コマンドラインでバッチ的にユーザ辞書を生成することもできます。以下のようにコマンドプロ
ンプト等から実行すると、ユーザソース辞書と同じフォルダにユーザ辞書ファイルaq0userdicが生成されます。
GenUserDicexe MID ユーザソース辞書csv
GenUserDicexe LARGE ユーザソース辞書csv
GenUserDicexe SMALL ユーザソース辞書csv
注意点
単語の読みに、外来語の「テャ」などの一部の音韻は指定できません。指定可能な読みは、下記仕様の「読み記
号表」を参照ください。
「音声記号列仕様」
httpwwwa
questcomdownloadmanualsiyo0onseikigoupdf
ライセンス
本ライブラリを含んだアプリケーションを使用する場合は「使用ライセンス」の購入が必要となります。また、本ライ
ブラリを含んだアプリの配布には事前に当社と『配布ライセンス契約』が必要となります。ライセンスの詳細は、
SDK パッケージ内のライセンスドキュメントを参照ください。
本ライブラリは、BSD ライセンスに基づいてライセンスされている下記のオープンソースソフトウェアを使用していま
す。このライセンスの表示は SDK パッケージ内の credits ファイルを参照ください。また、本ライブラリを含んだア
プリを配布する場合は、credits ファイルまたはその内容が含まれるようにしてください。
・ MARISA Matching Algorithm with Recursively Implemented StorAge
・ NAIST Japanese Dictionary 形態素解析用辞書
! 履歴
日付
版
変更箇所
更新内容
更新者
2011/01/17
1.0
新規作成
2013/06/29
2.0
Ver.2.0 用に書き換え
N.Y
2016/03/11
2.1
Ver.2.1、IDE を AndroidStudio に変更
N.Y
N.Y