AquesTalk2 Linux マニュアル

Similar documents
AquesTalk2 Win マニュアル

AquesTalk2 Win マニュアル&ライセンス規定

AquesTalk プログラミングガイド

AquesTalk Win Manual

AquesTalk2 Mac マニュアル

AquesTalk for WinCE プログラミングガイド

AquesTalk10 Linux マニュアル

AquesTalk Mac マニュアル

AquesTalk10 Win マニュアル

AquesTalk10 Mac マニュアル

AquesTalk10 iOS マニュアル

AquesTalk10 Android マニュアル

AqKanji2Koe Win マニュアル

計算機プログラミング

AqKanji2Koe Mac マニュアル

memo

プログラミング演習3 - Cプログラミング -

2006年10月5日(木)実施

Prog1_12th

情報処理演習 B8クラス

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Microsoft PowerPoint pptx

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

演算増幅器

PowerPoint プレゼンテーション

PowerPoint Presentation

Microsoft Word - Cプログラミング演習(10)

プログラミング演習3 - Cプログラミング -

多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ

Microsoft PowerPoint - CproNt02.ppt [互換モード]

02: 変数と標準入出力

02: 変数と標準入出力

02: 変数と標準入出力

02: 変数と標準入出力

目次 目次... 1 はじめに... 3 概要... 4 サポート環境... 5 関数... 6 MEC_OpenDevice... 7 MECDevice_Release... 8 MECDevice_GetFirmVersion... 9 MECDevice_GetCoreTemperature

Microsoft PowerPoint - 第3回目.ppt [互換モード]

02: 変数と標準入出力

7th CodeGear Developer Camp

Microsoft PowerPoint - 14th.ppt [互換モード]

memo

Microsoft Word - Cプログラミング演習(9)

slide4.pptx

PowerPoint プレゼンテーション

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

C言語におけるファイル入出力の高速化

ファイル入出力

memo

02: 変数と標準入出力

Taro-ファイル処理(公開版).jtd

gengo1-12

プログラミングI第10回

Microsoft PowerPoint - adi05.ppt [互換モード]

Microsoft PowerPoint - kougi9.ppt

Android Layout SDK プログラミング マニュアル

全体ロードマップ インターネット電話 音の符号化 ( 信号処理 ) 今日 音の録音 再生 ネットワーク ( ソケット ) プログラミング ファイル入出力 インターネットの基礎 C プログラミング基礎

Prog1_10th

Microsoft PowerPoint ppt

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で

gengo1-12

Microsoft Word - Cプログラミング演習(12)

プログラミング実習I

slide6.pptx

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

Microsoft Word - Training10_プリプロセッサ.docx

ポインタ変数

ファイル入出力

農業・農村基盤図の大字小字コードXML作成 説明書

slide5.pptx

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

PowerPoint Presentation

02: 変数と標準入出力

gengo1-12

昨年度までの研究紹介 および 研究計画

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog04.ppt

24th Embarcadero Developer Camp

program7app.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

Microsoft PowerPoint - handout09.ppt

Cプログラミング1(再) 第2回

Microsoft PowerPoint - kougi8.ppt

Microsoft PowerPoint - 10Com2.ppt

スライド タイトルなし

01-introduction.ppt

02: 変数と標準入出力

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

ポインタ変数

Microsoft PowerPoint - kougi2.ppt

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc

PowerPoint プレゼンテーション


ユーザーズマニュアル

V5.0 V4.2 から V5 への 変更点 1.1 版 2010 年 03 月 26 日

eYACHO 管理者ガイド

memo

新・明解C言語 実践編

Transcription:

AQUEST Corp. http://www.a-quest.com/ 1. 概要 AquesTalk2 Linux Manual 本文書は 規則音声合成ライブラリ AquesTalk2 Linux をアプリケーションに組み込んで使用するためのプログラミングに関しての方法および注意点を示したものです AquesTalk2 は AquesTalk の後継として開発されました 合成音声の声質を規定するデータとして Phont を新しく定義し これを差し替えることで様々な声の合成音声を生成することができます また この Phont は 別アプリケーションの PhontDesigner を用いれば ユーザサイドで好みの声を作成することができます 合成アルゴリズムは AquesTalk から大きく変更されました ただし 入力の音声記号列の仕様および関数 IF は同じですので簡単に置き換えることができます (AquesTalk と AquesTalk2 の混在を考慮し関数名は異なります ) AquesTalk Linux は Win 版の AquesTalk とは異なり DA( サウンド出力 ) 機能はありません 本ライブラリを用いて生成した音声波形データは ファイルに出力 サウンドデバイスへ出力 またはネットワークを通じて転送するなど アプリケーションの要求に応じた処理を別途実装する必要があります 音声記号列の文字コードは シフト JIS EUC UTF-8 UTF-16(LE) ローマ字の各種を利用できます それぞれ異なる名前の関数インターフェースが定義されています なお 本ライブラリをアプリケーションに組み込んで使用する際には 事前に当社ホームページ上の本ライブラリのライセンス規定を ご確認ください 2. 仕様 入力 かな表記音声記号列 出力 WAV フォーマット (8KHz サンプリング, 16bitPCM, モノラル ) 声種基本 1 種 (Phont の差換えで変更可能 ) ライブラリ形式 関数 I/F so 形式共有ライブラリ C 関数呼び出し stdcall OS Linux x86-64(64bit 版 )/ IA-32(32bit 版 ) メモリ マルチスレッド 外部依存ライブラリ コード : 約 50KB ヒープメモリ :1 スレッドあたり約 10KB+ 波形バッファ 対応 libc.so 3. ライブラリ配置 AquesTalk2 Linux のライブラリは共有ライブラリとなっています リンク時 および実行時に本ライブラリが必要になります 以下に一例として /usr/lib に本ライブラリを配置する方法を示します これによりリンク時および実行時にライブラリにアクセスできるようになります 配置ディレクトリはお使いの環境に応じて変更してください (/usr/lib64 /usr/lib32 など ) また バージョンによりライブラリのファイル名が実際と異なる場合があります 以下を su 権限にて行います # cp libaquestalk2.so.1.0 /usr/lib # ln -sf /usr/lib/libaquestalk2.so.1.0 /usr/lib/libaquestalk2.so.1 # ln -sf /usr/lib/libaquestalk2.so.1 /usr/lib/libaquestalk2.so # /sbin/ldconfig -n /usr/lib

4. Phont ファイル パッケージの phont ディレクトリに 声種を規定する Phont ファイルがいくつか含まれています なお この中の aq_rm.phont は ライブラリに内臓のデフォル libaquestalks2.so ト Phont と同じものです Default Phont ライブラリ呼び出し時に Phont ファイルデータを指定することによって 異なる声で合成が可能となります 今後 新しい Phont ファイルを逐次公開する予定です これらは 別途ダウンロードしてお使いください なお Phont ファイルは Windows 用と Linux 用の違いはなく 相互に使用することができます 5. コンパイル リンク 本ライブラリを使用する場合 ライブラリを呼び出すソースコードに AquesTalk2 Linux のヘッダファイル () をインクルードしてコンパイルします リンク時には -laquestalk2 を指定してリンクしてください 次に サンプルプログラム SampleTalk.c をコンパイル リンクする方法を示します $ g++ -o SampleTalk SampleTalk.c -laquestalk2 g++ の代わりに gcc でもリンクできますが undefined reference to ` gxx_personality_v0' ださい などのエラーが出る場合は -lstdc++ を追加して指定してく 6. 関数 API AquesTalk2_Synthe 生成した音声データは 使用後 呼び出し側で free() してください unsigned char * AquesTalk2_Synthe(const char *koe, int ispeed, int *size, void *phontdat) koe ispeed 音声記号列 発話速度 [%] 50-300 の間で指定デフォルト :100 値を大きく設定するほど 速くなる size 生成した音声データのサイズが返る [byte]( エラーの場合はエラーコードが返る ) phontdat phont データの先頭アドレスを指定します この DLL のデフォルト Phont を用いるときは 0 を指定します 戻り値 WAV フォーマットのデータ ( 内部で領域確保 解放は呼び出し側で AquesTalk2_FreeWave() で行う ) の先頭アドレスを返す エラー時は NULL を返す このとき size にエラーコードが設定 される AquesTalk2_FreeWave 説明音声データの領域を開放 void AquesTalk2_FreeWave (unsigned char *wav)

なし wav WAV フォーマットのデータ (AquesTalk2_Synthe() で生成した音声データ ) 戻り値 なし AquesTalk2_Synthe_Euc AquesTalk2_Synthe() の EUC 文字コード版 unsigned char * AquesTalk2_Synthe_Euc(const char *koe, int ispeed, int * size, void *phontdat) koe 音声記号列 (NULL 終端 EUC) AquesTalk2_Synthe_Utf8 AquesTalk2_Synthe() の UTF-8 文字コード版 unsigned char * AquesTalk2_Synthe_Utf8(const char *koe, int ispeed, int * size, void *phontdat) koe 音声記号列 (NULL 終端 UTF-8 BOM は無し ) AquesTalk2_Synthe_Utf16 AquesTalk2_Synthe() の UTF-16 文字コード版 unsigned char * AquesTalk2_Synthe_Utf16(const unsigned short *wkoe, int ispeed, int * size, void *phontdat) wkoe 音声記号列 (NULL 終端 UTF-16 BOM 指定は任意エンディアンは実行環境に依存 ) AquesTalk2_Synthe_Roman AquesTalk2_Synthe() のローマ字 (7bitASCII) 文字コード版 unsigned char * AquesTalk2_Synthe_Roman(const char *koe, int ispeed, int * size, void *phontdat) koe 音声記号列 (NULL 終端 ASCII 表記方法はホームページ上の音声記号列仕様を参照 )

7. 音声データデータ形式 本ライブラリで生成する音声データは 次の形式となります AquesTalk2_Synthe() で生成する音声データには 先頭部に WAV ヘッダが付与されています ストレート PCM データが必要な場合は 別途ヘッダを除いて使用してください ほかのフォーマットをご希望の場合はカスタマイズを承りますので お問い合わせください サンプリング周波数量子化 bit 数チャンネル数エンコードフォーマット 8KHz 16bit モノラルリニア PCM WAV 形式 8. 音声記号列 音声記号列の書き方 仕様については http://www.a-quest.com/download/ の 音声記号列仕様 を参照ください 9. サンプルコード 次に示すコードは 標準入力で音声記号列を指定し この音声記号列から音声データを生成し WAV ファイルとして出力する最も単純なプログラムです ( パッケージに含まれている SampleTalk.c と同じ ) SampleTalk.c #include <stdio.h> #include <> // AquestTalk クラスのヘッダ int main(int ac, char **av) { int size; int iret; char str[1024]; // 音声記号列を入力 if(fgets(str, 1024-1, stdin)==0) return 0; // 音声合成 unsigned char *wav = AquesTalk2_Synthe_Euc(str, 100, &size); if(wav==0){ fprintf(stderr, "ERR:%d n",size); return -1; // 音声データ (wav フォーマット ) の出力 fwrite(wav, 1, size, stdout); // 音声データバッファの開放 AquesTalk2_FreeWave(wav); return 0; ビルド方法 $ g++ -o SampleTalk SampleTalk.c -laquestalk2 実行方法 $ echo " これわ ごーせー / お ' んせーです "./SampleTalk > test.wav 音声記号列にシェルの特殊文字が含まれているので ダブルクォーテーション ( " ) で囲むなど 適当にエスケープする必要があります

test.wav に音声データが生成できれば OK です エラーの場合には 文字コードやライブラリの配置が正しく行われているか再確認してください 本サンプルプログラムの文字コードは EUC になっています 文字コードを変更する場合は AquesTalk2_Synthe_Euc() 部分を文字コードに応じて変更してください 次に示すコードは 先のコードに外部の Phont ファイルを指定できるようにしたものです Phont ファイルをバイナリで読み込んで 先頭アドレスを合成時に指定しています #include <stdio.h> #include <memory.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <> // AquestTalk クラスのヘッダ void * file_load(const char * file, int * psize); int main(int ac, char **av) { int size; // Phont ファイルの読み込み int size; void *pphont = file_load(" aq_f1b.phont", &size); // Phont ファイルをここで指定 if(pphont ==0) return-2; // メモリ上に音声データを生成 unsigned char *wav = AquesTalk2_Synthe(" こんにちわ ", 100, &size, pphont); if(wav==0) { fprintf(stderr, "ERR %d", size); // エラー時は size にエラーコードが返る return -1; // Phont データの開放 ( 音声合成が終わったら開放できる ) free(pphont); // ルートディレクトリに生成した音声データを保存 FILE *fp = fopen(" ZZZ.wav", "wb"); fwrite(wav, 1, size, fp); fclose(fp); // Synthe() で生成した音声データは 使用後に呼び出し側で解放する AquesTalk2_FreeWave (wav); return 0; // ファイルの読み込み void * file_load(const char * file, int * psize) { FILE *fp; char *data; struct stat st; *psize = 0; if( stat(file, &st)!=0) return NULL; if((data=(char *)malloc(st.st_size))==null){ fprintf(stderr,"can not alloc memory(file_load) n"); return NULL; if((fp=fopen(file,"rb"))==null) { free(data); perror(file); return NULL; if(fread(data, 1, st.st_size, fp)<(unsigned)st.st_size) { fprintf(stderr,"can not read data (file_load) n"); free(data);

fclose(fp); return NULL; fclose(fp); *psize = st.st_size; return data; 10. エラーコード表 関数が返すエラーコードの内容は 次の通りです 値 内容 100 その他のエラー 101 メモリ不足 102 音声記号列に未定義の読み記号が指定された 103 韻律データの時間長がマイナスなっている 104 内部エラー ( 未定義の区切りコード検出 ) 105 音声記号列に未定義の読み記号が指定された 106 音声記号列のタグの指定が正しくない 107 タグの長さが制限を越えている ( または [>] がみつからない ) 108 タグ内の値の指定が正しくない 109 WAVE 再生ができない ( サウンドドライバ関連の問題 ) 110 WAVE 再生ができない ( サウンドドライバ関連の問題非同期再生 ) 111 発声すべきデータがない 200 音声記号列が長すぎる 201 1つのフレーズ中の読み記号が多すぎる 202 音声記号列が長い ( 内部バッファオーバー 1) 203 ヒープメモリ不足 204 音声記号列が長い ( 内部バッファオーバー 1) 1000-1008 Phont データが正しくない 11. 履歴 日付版変更箇所更新内容更新者 2010/01/25 1.0 新規作成 N.Y