Comments
Description
Transcript
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