Android JaTTS
をテンプレートにして作成
開始行:
Androidに日本語をしゃべらせる(音声合成)アプリケーションとライブラリです。
#contents
* サンプルアプリケーションを試す [#o9d82e96]
Androidの 設定→アプリケーション→提供不明のアプリ にチェック。
以下のQRコードまたは[[JaTTSDemo-0.0.2.apk:http://gimite.net/archive/JaTTSDemo-0.0.2.apk]]からダウンロード。
http://chart.apis.google.com/chart?chs=150x150&cht=qr&chl=http://gimite.net/archive/JaTTSDemo-0.0.2.apk&ext=.png
注意:
- サーバで音声に変換する方法なので、ネットワークに繋がっていないと使えません。
- 少し時間がかかります。ネットワークやサーバの状態によりますが、しゃべり始めるまでにだいたい3〜5秒はかかります。
- 入力内容はすべてサーバに送られます。
- サーバが落ちていたりして失敗する場合があります。エラーが出る場合はしばらくしてから再度試してください。
* ライブラリを使う [#h642486e]
- [[android-jatts-0.0.2.jar:http://gimite.net/archive/android-jatts-0.0.2.jar]] をダウンロードしてAndroidアプリケーションのプロジェクトに追加。
- AndroidManufest.xmlにINTERNETパーミッションを追加。
<manifest>
...
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
JapaneseTextToSpeechというクラスが、だいたいAndroid標準のTextToSpeechクラスと同じように使えます。一部のメソッドしか実装されてないですが…。
基本的な使い方:
import net.gimite.jatts.JapaneseTextToSpeech;
import android.speech.tts.TextToSpeech;
// ActivityやService内で
JapaneseTextToSpeech tts = new JapaneseTextToSpeech(this, null);
tts.speak("こんにちは", TextToSpeech.QUEUE_FLUSH, null);
speak()の第2引数は TextToSpeech.QUEUE_FLUSH のみです。 QUEUE_ADD には未対応です。
speak()の第3引数で細かい設定ができます。
HashMap<String, String> params = new HashMap<String, String>();
// notificationとして再生。
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
String.valueOf(AudioManager.STREAM_NOTIFICATION));
// utterance idを設定。
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "1");
// 声色を変える。JapaneseTextToSpeech独自オプション。
// "male01", "female01", "male02"の3種類。
params.put(JapaneseTextToSpeech.KEY_PARAM_SPEAKER, "female01");
tts.speak("こんにちは", TextToSpeech.QUEUE_FLUSH, params);
TextToSpeechクラスと同様、JapaneseTextToSpeech#setOnUtteranceCompletedListener()が使えます。また、追加でsetOnStateChangedListener()、setOnErrorListener()というのがあります。使い方はサンプルアプリケーションのMainActivity.javaを見てください。
* JapaneseTextToSpeechクラス メソッド一覧 [#od1dfaa5]
public class JapaneseTextToSpeech {
// TextToSpeechクラス互換:
public JapaneseTextToSpeech(Context context, TextToSpeech.OnInitListener listener);
// ロード中も true になります。
public boolean isSpeaking();
public void setOnUtteranceCompletedListener(
TextToSpeech.OnUtteranceCompletedListener listener);
// queueModeは TextToSpeech.QUEUE_FLUSH のみ対応。
public synchronized void speak(
String text, int queueMode, HashMap<String, String> params);
public void stop();
// ロードに時間がかかるので、サブスレッド内での呼び出しを推奨。
public int synthesizeToFile(String text, HashMap<String, String> params, String filename);
// 独自:
public void setOnStateChangedListener(OnStateChangedListener listener);
public void setOnErrorListener(OnErrorListener listener);
public State getState();
public enum State {
IDLE, LOADING, SPEAKING,
}
public interface OnStateChangedListener {
public void onStateChanged(State state, String utteranceId);
}
public interface OnErrorListener {
public void onError(Exception exception, String utteranceId);
}
}
* ソースコード [#se8d28a4]
[[android-jatts - Github:https://github.com/gimite/android-jatts]]
JaTTSDemoがサンプルアプリケーション、JaTTSLibがライブラリです。それぞれEclipseのプロジェクトファイルになっています。ライセンスは修正BSDライセンスです。
* 仕組み [#n4d0f803]
サーバ側で[[Galatea Talk:http://hil.t.u-tokyo.ac.jp/~galatea/index-jp.html]] ([[デモ:http://www.sp.nitech.ac.jp/demo/open_jtalk/]])というものを動かして、音声ファイルに変換したものをAndroidで再生しているだけです。
http://gimite.net/speech?format=wav&speaker=female01&text=こんにちは
みたいなURLでwavファイルを取得できるので、他の用途で使いたい人はご自由にどうぞ。落ちたりするかもしれませんが。
* ライセンス [#qba11838]
サーバは[[Galatea Talk:http://hil.t.u-tokyo.ac.jp/~galatea/regist-jp.html]]のライセンスに基づいて提供しています。ライブラリのライセンスは修正BSDライセンスです。
終了行:
Androidに日本語をしゃべらせる(音声合成)アプリケーションとライブラリです。
#contents
* サンプルアプリケーションを試す [#o9d82e96]
Androidの 設定→アプリケーション→提供不明のアプリ にチェック。
以下のQRコードまたは[[JaTTSDemo-0.0.2.apk:http://gimite.net/archive/JaTTSDemo-0.0.2.apk]]からダウンロード。
http://chart.apis.google.com/chart?chs=150x150&cht=qr&chl=http://gimite.net/archive/JaTTSDemo-0.0.2.apk&ext=.png
注意:
- サーバで音声に変換する方法なので、ネットワークに繋がっていないと使えません。
- 少し時間がかかります。ネットワークやサーバの状態によりますが、しゃべり始めるまでにだいたい3〜5秒はかかります。
- 入力内容はすべてサーバに送られます。
- サーバが落ちていたりして失敗する場合があります。エラーが出る場合はしばらくしてから再度試してください。
* ライブラリを使う [#h642486e]
- [[android-jatts-0.0.2.jar:http://gimite.net/archive/android-jatts-0.0.2.jar]] をダウンロードしてAndroidアプリケーションのプロジェクトに追加。
- AndroidManufest.xmlにINTERNETパーミッションを追加。
<manifest>
...
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
JapaneseTextToSpeechというクラスが、だいたいAndroid標準のTextToSpeechクラスと同じように使えます。一部のメソッドしか実装されてないですが…。
基本的な使い方:
import net.gimite.jatts.JapaneseTextToSpeech;
import android.speech.tts.TextToSpeech;
// ActivityやService内で
JapaneseTextToSpeech tts = new JapaneseTextToSpeech(this, null);
tts.speak("こんにちは", TextToSpeech.QUEUE_FLUSH, null);
speak()の第2引数は TextToSpeech.QUEUE_FLUSH のみです。 QUEUE_ADD には未対応です。
speak()の第3引数で細かい設定ができます。
HashMap<String, String> params = new HashMap<String, String>();
// notificationとして再生。
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
String.valueOf(AudioManager.STREAM_NOTIFICATION));
// utterance idを設定。
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "1");
// 声色を変える。JapaneseTextToSpeech独自オプション。
// "male01", "female01", "male02"の3種類。
params.put(JapaneseTextToSpeech.KEY_PARAM_SPEAKER, "female01");
tts.speak("こんにちは", TextToSpeech.QUEUE_FLUSH, params);
TextToSpeechクラスと同様、JapaneseTextToSpeech#setOnUtteranceCompletedListener()が使えます。また、追加でsetOnStateChangedListener()、setOnErrorListener()というのがあります。使い方はサンプルアプリケーションのMainActivity.javaを見てください。
* JapaneseTextToSpeechクラス メソッド一覧 [#od1dfaa5]
public class JapaneseTextToSpeech {
// TextToSpeechクラス互換:
public JapaneseTextToSpeech(Context context, TextToSpeech.OnInitListener listener);
// ロード中も true になります。
public boolean isSpeaking();
public void setOnUtteranceCompletedListener(
TextToSpeech.OnUtteranceCompletedListener listener);
// queueModeは TextToSpeech.QUEUE_FLUSH のみ対応。
public synchronized void speak(
String text, int queueMode, HashMap<String, String> params);
public void stop();
// ロードに時間がかかるので、サブスレッド内での呼び出しを推奨。
public int synthesizeToFile(String text, HashMap<String, String> params, String filename);
// 独自:
public void setOnStateChangedListener(OnStateChangedListener listener);
public void setOnErrorListener(OnErrorListener listener);
public State getState();
public enum State {
IDLE, LOADING, SPEAKING,
}
public interface OnStateChangedListener {
public void onStateChanged(State state, String utteranceId);
}
public interface OnErrorListener {
public void onError(Exception exception, String utteranceId);
}
}
* ソースコード [#se8d28a4]
[[android-jatts - Github:https://github.com/gimite/android-jatts]]
JaTTSDemoがサンプルアプリケーション、JaTTSLibがライブラリです。それぞれEclipseのプロジェクトファイルになっています。ライセンスは修正BSDライセンスです。
* 仕組み [#n4d0f803]
サーバ側で[[Galatea Talk:http://hil.t.u-tokyo.ac.jp/~galatea/index-jp.html]] ([[デモ:http://www.sp.nitech.ac.jp/demo/open_jtalk/]])というものを動かして、音声ファイルに変換したものをAndroidで再生しているだけです。
http://gimite.net/speech?format=wav&speaker=female01&text=こんにちは
みたいなURLでwavファイルを取得できるので、他の用途で使いたい人はご自由にどうぞ。落ちたりするかもしれませんが。
* ライセンス [#qba11838]
サーバは[[Galatea Talk:http://hil.t.u-tokyo.ac.jp/~galatea/regist-jp.html]]のライセンスに基づいて提供しています。ライブラリのライセンスは修正BSDライセンスです。
ページ名: