短いテキストの音声合成
Android SDK
1 統合手順
1.1 aar依存関係の追加
android-tts-sdk-release-V1.0.0.0.aar をプロジェクトの libs ディレクトリに配置して、 app モジュールのbuild.gradle を修正し、aarファイルとokhttpを依存関係として追加します。
implementation fileTree(dir:"libs",include:["*.jar","*.aar"])
implementation'com.squareup.okhttp3:okhttp:4.9.0'1.2 アプリに関連する権限の追加
AndroidManifest.xmlファイルを修正してください。
<!--インターネット権限-->
<uses-permission android:name="android.permission.INTERNET" />2 呼出し手順・サンプルコード
2.1.インスタンスの取得
⑴ 合成クラスの作成
Tts tts=Tts.getInstance(this,((code,msg)->{
if("00000".equals(code)){
System.out.println("成功");
}else{
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
})); ⑵ コールバックの設定
(1)コールバックパラメータの説明
| 名前 | タイプ | 説明 | レスポンスパラメータ |
|---|---|---|---|
| onStart | Function | エンジン接続開始のコールバックメソッド | Stringタイプ 現在のタスクのid |
| onWarning | Function | エンジンからの警告結果のコールバックメソッド | タスクid及びErrorsタイプのステータスコード |
| onError | Function | エンジンからのエラー結果のコールバックメソッド | タスクid及びErrorsタイプのステータスコード |
| onPlayStart | Function | エンジンからの再生開始のコールバックメソッド | なし |
| onPlayFinish | Function | エンジンからの合成終了のコールバックメソッド | なし |
| onGetAudio | Function | エンジンからの合成音声データのコールバックメソッド | byte[]タイプの音声データ |
| onSynthesisTimestamp | Function | エンジンからのタイムスタンプ及び音素のコールバックメソッド | JsonObject |
| onStop | Function | エンジンからの再生終了のコールバックメソッド | なし |
| (2)パラメータのインスタンス |
tts.setListener(new Tts.Listener(){
@Override
public void onStart(String taskId){}
@Override
public void onStop(){}
@Override
public void onError(String taskId,ErrorCodes.ErrorCode err){}
@Override
public void onGetAudio(byte[]data){}
@Override
public void onPlayStart(){}
@Override
public void onPlayFinish(){}
@Override
public void onSynthesisTimestamp(JsonObject payload){}
@Override
public void onWarning(String taskId,ErrorCodes.ErrorCode err){}
});
3.パラメータの設置
| パラメータ | タイプ | 必須かどうか | 説明 | デフォルト値 |
|---|---|---|---|---|
| text | String | はい | 合成待ちのテキストの長さの制限は、1024バイト(UTF-8エンコード)です。 | なし |
| text_type | String | いいえ | plain | plain |
| lang_type | String | はい | 言語のオプションは、開発ガイド-言語とボイスのサポートをご参照ください。 | なし |
| voice | String | はい | ボイスのコードは、開発ガイド-言語とボイスのサポートをご参照ください。 | 日本語:Xiaohui 英語:Julie 中国語:Xiaohui |
| sample_rate | Integer | いいえ | 音声のサンプリングレートは、8000、16000、24000を選択できます。 | 24000 |
| format | String | いいえ | 音声エンコードの形式は、wav / pcm / ogg_opus / mp3です。 注意:wav はストリーミングをサポートしていません。 | pcm |
| compression_rate | Integer | いいえ | opus形式の場合のエンコード圧縮比、パラメータ範囲 [1, 20]です。 | 1 |
| speech_rate | Float | いいえ | 話速、パラメータ範囲 [0.2, 3]、通常は小数点以下1桁で十分です | 1 |
| volume | Float | いいえ | 音量、パラメータ範囲 [0.1, 3]、通常は小数点以下1桁で十分です | 1 |
| pitch_rate | Float | いいえ | イントネーション、[-1.0, 1.0] の範囲の数値で表されるオクターブ、-1.0 は低いオクターブ、1.0 は高いオクターブを表します | 0 |
| emotion | String | いいえ | 感情・スタイル、開発ガイド-言語とボイスのサポートを参照してください。 | なし |
| silence_duration | Integer | いいえ | 文末の無音時間、単位はミリ秒(ms)です | 125 |
| enable_timestamp | Boolean | いいえ | タイムスタンプ関連、trueを渡すと有効になり、元のテキストのタイムスタンプを返すことができます(TN処理後のテキストではなく、元のテキスト内のアラビア数字や特殊記号などを保持します)。注意:元のテキストに連続した句読点やスペースは依然として処理されますが、タイムスタンプの連続性には影響しません。 | false |
Tts.Params params=tts.getParams();
params.setText(text);
params.setSampleRate(24000);
params.setFormat("pcm");
params.setLang("zh-cmn-Hans-CN");4. 合成開始/合成停止
tts.start();
tts.stop();