pdf

AqKanjiKoe iOS Manual
(株)アクエスト
httpwwwaquestcom
概要
本文書は、言語処理ライブラリ AqKanjiKoe iOS をアプリケーションに組み込んで使用するためのプログラミング
に関しての方法および注意点を示したものです。
AqKanjiKoe は漢字かな混じり文のテキスト情報を AquesTalk用のアクセント付きの音声記号列に変換する、
iPhoneiPad 用のライブラリです。
このライブラリと音声合成ライブラリ AquesTalkを使うことにより、動的に変化する様々な漢字混じりのテキスト
からリアルタイムに音声メッセージを生成できるようになります。
特長
・簡単に組み込み可能
テキスト文字列を入力すると音声記号列を返す、シンプルな API
・高速な変換処理
約 # 万字秒の高速な変換処理Win 版で計測)
・高精度な読み・アクセント付与
最大 %# 万語の単語辞書とアクセントルールにより、正確な読みとアクセントを生成
仕様
AqKanjiKoe
ライブラリ形式
スタティックライブラリ
armv(armv(sarm)*i+,)x,).)* Universal Binary2 各々bitcode を含む
対応 OS
iOS ) 以降
入力データ形式
漢字かな混じり文テキスト(UTF,2NULL 終端
出力データ形式
AquesTalkカナ音声記号列(UTF,2NULL 終端
ビルド環境
Xcode (88 iOS 9SDK LLVM (#
プログラムサイズ
約 8#KByte リンク後)
辞書サイズ
標準:約7MB(約36万語)、スモール:約5MB(約25万語) ラージ:約13MB(約50万語)
依存ライブラリ
libc<<
ファイル
ビルド及び実行時に下記のファイルを使用します。
libAqKanjiKoea : スタティックライブラリ実体(ビルド時のみ必要)
AqKanjiKoeh
: 関数定義ヘッダファイル(ビルド時のみ必要)
aq.dic
: 辞書ファイル(複数のファイルを含む 実行時に必要
4. アーキテクチャと Universal Binary
libAqKanjiKoe は、Simulatorシミュレータ)用と Device実機用の2つの異なるアーキテクチャのライブラリがひと
つにパックされている Universal Binary となっています。Xcode がビルド時にターゲットにあわせて適切な方を選
択しますので、開発者がターゲットに応じて切り替える必要は有りません。
なお、本ライブラリには、Device 用として、armv(iPhone*S 以前 、armv(siPhone%、armv)*iPhone%s 以降
の3つ、Simulator 用として i+,) と x,).)* の2つの計5つのアーキテクチャのライブラリが含まれています。
さらに、bitcode にも対応しましたので、iOS9 からのアプリ最適化の仕組み AppThinning 用の bitcode に対応したア
プリを作成できます。
5. 関数 API
AqKanjiKoeCreate
説明
AqKanjiKoeh
言語処理モジュールのインスタンス生成
生成したインスタンスは、使用後、AqKanjiKoe.Release で解放してください。
内部データの初期化も行います。
構文
void ? AqKanjiKoeCreate const char ?pathDic2 int ?pErr
引数
pathDic
辞書のディレクトリを指定。通常、ABapp dirCaq.dicA。指定した内容は内部で保存される。
pErr
エラー時にはエラーコードが入る 正常終了時は不定値
戻り値
インスタンスハンドル エラーの時は0が返る。このとき pErr にエラーコードが設定される。
AqKanjiKoeRelease
説明
言語処理モジュールのインスタンスを開放
構文
void AqKanjiKoeRelease void ? hAqKanjiKoe
AqKanjiKoeh
引数
hAqKanjiKoe
AqKanjiKoe.Create の戻り値を指定します。
戻り値
なし
AqKanjiKoeConvert
AqKanjiKoeh
説明
漢字かな交じりのテキストを音声記号列に変換
構文
int AqKanjiKoeConvert void ? hAqKanjiKoe2 const char ?kanji2 char ?koe2 int nBufKoe
引数
hAqKanjiKoe
AqKanjiKoe.Create の戻り値を指定します。
kanji
入力漢字かな混じり文テキスト文字列(UTF,2 NULL 終端
koe
出力バッファ。音声記号列文字列が返る(UTF,2 NULL 終端
nBufKoe
koe バッファのサイズFbyteG %) 以上を指定。バッファサイズ以上の音声記号列は切り捨てら
れますので入力テキストの数倍のサイズを指定することを推薦。
戻り値
#正常終了 それ以外:エラーコード
エラーコード表
関数が返すエラーコードの内容は、次の通りです。
値
内容
8#8
関数呼び出し時の引数が NULL になっている。
8#%
入力テキストが長すぎる
8#(
変換できない文字コードが含まれている
## 番台
システム辞書aqdicbinが不正
+## 番台
ユーザ辞書aq.userdicが不正
8##
その他のエラー
辞書サイズ
この SDK には、サイズの異なる + 種類のシステム辞書が含まれています。
利用の目的に応じて選択してお使いください。F評価版は標準辞書のみG
辞書名
フォルダ
サイズ
見出し語数
標準辞書
aq.dic
約7MB
約36万語
ラージ辞書
aq.dic.large
約 8+MB
約 %# 万語
スモール辞書
aq.dic.small
約 %MB
約 % 万語
サンプルアプリ
本パッケージにはサンプルアプリ HelloKanjiKoe の xcode プロジェクトが含まれて
います。このアプリは、任意の日本語テキストを音声記号に変換するだけの機能
を持っています。
なお、サンプルアプリのソースコードライブラリやライブラリのヘッダファイルを除
くは、ご自由に改変してご使用いただけます。
使用方法
iOS の開発環境xcodeがインストールされていることが前提です。
8 本パッケージの AqKanjiKoe フォルダごと任意の場所にコピー
(ad.dic2 lib などのフォルダも必要です)
HelloKanjiKoexcodeproj をダブルクリックして xcode を起動
+ 「Run」アイコン押下でアプリ実行
* 漢字かな混じり文のテキストボックスに日本語テキストを入力
% Convert ボタン押下
) 音声記号列のテキストボックスに音声記号列が表示されます。
なお、環境によっては、ヘッダやライブラリがみつからずビルドエラーになる場合
があるかもしれません。このときは、次章を参考にして AqKanjiKoelib ディレクトリを検索パスに追加してくださ
い。
アプリケーションへの実装方法
ヘッダ、ライブラリ
AqKanjiKoe ライブラリをアプリケーションに組み込むときは、ヘッダファイルAqKanjiKoehをインクルードし、
ビルド時に libAqKanjiKoea をリンクするようにします。
具体的な方法として、ヘッダファイルは AqKanjiKoeh ひとつだけですので、アプリケーションのソースファイルと同
じディレクトリにコピーして、ソース内で次のようにインポートすると良いでしょう。
Iimport AAqKanjiKoehA
libAqKanjiKoea も、ソースファイルと同じディレクトリにコピーしてから、Xcode 上のメニュCFileCAdd Files to”K”
にてプロジェクトに追加します。この操作により、Project Navigator通常画面左側のプロジェクトで使用するファイ
ルリストに、libAqKanjiKoea が追加されていることがわかります。
なお、プロジェクトの構成によってはビルド時にライブラリが見つからない場合があります。その場合は、Targets の
設定でFLIBRARY.SEARCH.PATHSGに libAqKanjiKoea をコピーしたフォルダを適宜指定します。
9.2. 辞書ファイル
辞書ファイルが実行時に必要なので、ビルド時にこれらがアプリapp内にコピーされるように設定します。
メニューCFileCAdd files to “xxx”K で aq.dic フォルダを選択します。
このとき、FCopy items into destinationKGはチェックをはずして、FCreate folder referencesG側を選択してFAddGで追
加します。
これで、「プロジェクトナビゲーター」上に青色のフォルダアイコンの aq.dic が出来上がります。これでアプリケーシ
ョンパッケージに辞書ファイルが aq.dic フォルダごとコピーされるようになります。
9.3. 外部ライブラリ
外部ライブラリ
本ライブラリは、C<<標準ライブラリである libc<<ライブラリを使用します。
これを指定し忘れるとアプリのビルド時に関数が見つからないというリンクエラーが発生します。
アプリのプロジェクトにこれらを追加する方法は、Target の設定画面>General>Linked Frameworks and Libraries
で+部分を押下して追加できます。この操作により、Project Navigator通常画面左側のプロジェクトで使用するフ
ァイルリストに、libc<<tbd が追加されていることがわかります。
なお、アプリ側でmm などを使っていて、すでに C<<のコンパイラを使用するようになっている場合は、libc<<の追
加は不要です。
9.4. ソースコードの修正
ソースコードの修正
サンプルプログラムのコードを例にプログラムコード上での実装方法を示します。
ViewControllerh
Iimport BUIKitUIKithC
Iimport AAqKanjiKoehA
Ointerface ViewController UIViewContoller
P
IBOutlet UITextField? kanjiQ
IBOutlet UITextField? koeQ
void ?m.pAqKanjiKoeQ
R
IBActionconvertidsenderQ
Oend
サンプルプログラムの ViewControllerh で、ライブラリのヘッダをインポートし( 行目)、インスタンス用の変数を用
意します(, 行目)。
サンプルプログラムの、ViewControllerm では、viewDidLoad内で AqKanjiKoe のインスタンスを生成し、
deallocにてインスタンスを解放しています。このインスタンスは発声終了時まで維持する必要があります。どのタ
イミングで AqKanjiKoe のインスタンスを生成し解放するかはアプリでの利用方法により適宜変更してください。
ViewControllerm
voidviewDidLoad P
Fsuper viewDidLoadGQ
アプリ直下のaq.dic フォルダを指定
NSString ?path S FFFNSBundle mainBundleG bundlePathG stringByAppendingStringOAaq.dicAGQ
const char ?dicDir S Fpath UTF,StringGQ
NSLogOATsA2 dicDirQ
言語処理ライブラリのインスタンス生成
int iErrQ
m.pAqKanjiKoe S AqKanjiKoe.CreatedicDir2 UiErrQ
V エラー処理していない エラーのときは NULL が戻る
R
まず、辞書ファイルのパスを取得します(* 行目)。この例ではaq.dic ディレクトリがapp の直下に置かれているも
のとしています。そのパスを引数にして、AqKanjiKoe.Createを呼び出します。戻り値がインスタンスのアドレス
となります。辞書のパスが異なっていたり、辞書ファイルの内容が正しくない場合は、この関数は NULL を返して、
iErr にエラーコードを返しますので、必要に応じてエラー処理を加えてください。
ViewControllerm
voiddealloc P
言語処理ライブラリのインスタンス解放
ifm.pAqKanjiKoe AqKanjiKoe.Releasem.pAqKanjiKoeQ
R
View の終了時に AqKanjiKoe のインスタンスを開放します(+ 行目)
ViewControllerm
IBActionkkConvert
P
char cKoeF8###GQ
NSString ?strKanji S Fkanji textGQ
NSString 文字列を C 言語文字列Utf,に変換
const char ?cKanji S FstrKanji UTF,StringGQ
言語処理 漢字仮名まじり文を音声記号列に変換
AqKanjiKoe.Convertm.pAqKanjiKoe2 cKanji2 cKoe2 8###Q
C 言語文字列Utf,を NSString に変換してテキストボックスへセット
koetext S FNSString stringWithCStringcKoe encodingNSUTF,StringEncodingGQ
R
これは、漢字混じりのテキストを音声記号列に変換する部分のコードです。
メソッド convert は、Convert ボタンをタップされたときに呼び出されるメソッドです。
AqKanjiKoe ライブラリの文字コードは UTF, ですので、NSString の文字列変数を、UTF, の C 文字列char?
に変換します(( 行目)。
AqKanjiKoe.Convert関数で、漢字かな混じりの文字列を音声記号列に変換します(8# 行目)。変換後の音声記
号列は cKoe 配列に入ります。AqKanjiKoe.Convert 関数の最後の引数は cKoe の配列のサイズを指定します。
その大きさは入力の文字の長さに応じてサイズを適宜決定してください。なお、配列サイズが音声記号列の文字
列より小さい場合、適当な部分で切り捨てられてしまいます。
返される音声記号列も UTF, の C 文字列ですので、ここでは NSString に変換してテキストボックスにセットしてい
ます(8+ 行目)。
また、本サンプルは ObjectiveC で記述していますが、swift でも使用可能です。具体的なコーディングについては
ネットで検索してください。
ユーザ辞書
この SDK には、ライブラリの動作検証用にサンプルのユーザ辞書aq.userdicが含まれています。
独自の単語を追加する場合は、ユーザ辞書作成ツールGenUserDicexeを用います。
F評価版にユーザ辞書作成ツールは含まれていませんG
恐れ入りますが、GenUserDicexe は Windows アプリのため、Windows 環境で動作させる必要があります。
ユーザ辞書の編集
GenUserDicexe を起動します。
メニューCファイルC開く より、付属のサンプルのユーザソース辞書sample.src.userdiccsvを開きます。
F見出し語Gは、単語をすべて全角で指定してください。またアルファベットは、大文字で記述します。
F発音G部分には、その単語の読みとアクセントを指定します。読みは全角カナで記述し、アクセントは「’」半角で
アクセント核声の高さが高→低に変化する部分に指定します。平板アクセントの場合はアクセントは指定しませ
ん。
単語を追加する場合は、F見出し語G、F発音G、F品詞Gを指定して、F追加Gボタンを押下します。
表示されているレコードの内容を修正する場合は、F変更Gボタンを押下します。
表示されているレコードを削除する場合は、F削除Gボタンを押下します。
ユーザ辞書ファイルの生成
GenUserDicexe で内容を変更した後、一旦、メニューCファイルC上書き保存で修正内容を保存します。
その後、所望の辞書サイズを選択して、F生成Gボタンを押下し、出力するユーザ辞書ファイル名を指定します。
以上で、ユーザ辞書ファイルが生成されます。
なお、ユーザ辞書のファイル名は aq.userdic とし、ライブラリの実行時にはシステム辞書aqdicbinと同じディレク
トリに配置してください。
コマンドラインによるユーザ辞書ファイルの生成
サンプルのユーザソース辞書sample.src.userdiccsvをエディタ等で開くとわかるとおり、ソース辞書は各行が
見出し語2 よみ2 品詞
で構成されています。
したがって、エディタ等を用いてユーザソース辞書を直接編集することができます。
注意点として、見出し語2はすべて全角で指定し、アルファベットは大文字で記述。読みは全角カナで記述し、アク
セントは「’」半角で指定する必要があります。
GenUserDicexe は、コマンドラインでバッチ的にユーザ辞書を生成することもできます。以下のようにコマンドプロ
ンプト等から実行すると、ユーザソース辞書と同じフォルダにユーザ辞書ファイルaq.userdicが生成されます。
GenUserDicexe MID ユーザソース辞書csv
GenUserDicexe LARGE ユーザソース辞書csv
GenUserDicexe SMALL ユーザソース辞書csv
注意点
単語の読みに、外来語の「テャ」などの一部の音韻は指定できません。指定可能な読みは、下記仕様の「読み記
号表」を参照ください。
「音声記号列仕様」
httpwwwaquestcomdownloadmanualsiyo.onseikigoupdf
配布パッケージ作成の注意
本ライブラリは、BSD ライセンスに基づいてライセンスされている下記のオープンソースソフトウェアを使用していま
す。このライセンスの表示は付属の CREDITS ファイルを参照ください。また、本ライブラリを含んだアプリを配布
する場合は、CREDITS ファイルまたはその内容が含まれるようにしてください。
・ MARISA Matching Algorithm with Recursively Implemented StorAge
・ NAIST Japanese Dictionary 形態素解析用辞書
ライセンス
本ライブラリを含んだアプリケーションを使用する場合は「使用ライセンス」の購入が必要となります。また、本ライ
ブラリを含んだアプリの配布には事前に当社と『配布ライセンス契約』が必要となります。ライセンスの詳細は、本
パッケージ内のライセンスドキュメントを参照ください。
サポート
サポート
バグや不具合に関しては、infoaqOaquestcom にご連絡いただければ幸いです。
使用方法についてのご質問は、BBS httpwwwaquestcomaquestalkpatiopatiocgi に投げていただければ
と思います。
履歴
日付
版
変更箇所
更新内容
更新者
2011/01/17
1.0
新規作成
2013/07/03
2.0
Ver.2 用に書き換え
N.Y
2014/12/23
2.1
64bit 追加&ビルド方法 現 xcode に合わせて修正
N.Y
2016/03/19
2.1.1
Xcode7 用に、x86_64,bitcode 記述追加
N.Y
N.Y