CosyVoice テキスト読み上げ(TTS)SDKを使用して、Androidアプリでテキストを表現力豊かで高品質な音声に変換します。
NativeNui
SDKは複数のNativeNuiインスタンスをサポートし、コールバックを使用して合成イベントを配信します。
アーキテクチャのハイライト:
-
複数のインスタンス:
new NativeNui(Constants.ModeType.MODE_STREAM_INPUT_TTS)を呼び出してインスタンスを作成します。 -
コールバック駆動:
INativeStreamInputTtsCallbackインターフェースを通じてイベントと音声データを受信します。 -
イベントタイプ:
STREAM_INPUT_TTS_EVENT_SYNTHESIS_STARTED:合成タスクが開始されました。onStreamInputTtsDataCallback:音声データが配信されます。STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE:合成タスクが完了しました。STREAM_INPUT_TTS_EVENT_TASK_FAILED:合成タスクが失敗しました。
使用フロー
CosyVoiceは、一括入力とストリーミング入力の2つの呼び出しモードをサポートしています。
一括入力は、短いテキストやSSMLマークアップを使用するあらゆるシナリオに適しています。
playStreamInputTts()またはasyncPlayStreamInputTts()— 完全なテキストを送信して合成を開始します。前者は同期であり、合成が完了した後に戻ります。後者は非同期であり、合成を開始した直後に戻ります。onStreamInputTtsDataCallback()— 音声データを受信します。STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE— 合成が完了しました。
startStreamInputTts()— SDKを初期化し、コールバックと接続パラメータを設定します。sendStreamInputTts()— テキストが利用可能になり次第、継続的に送信します。onStreamInputTtsDataCallback()— 音声データを受信します。stopStreamInputTts()またはasyncStopStreamInputTts()— 合成終了リクエストを送信します。前者は同期であり、合成が完了した後に戻ります。後者は非同期であり、リクエストを送信した直後に戻ります。STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE— 合成が完了しました。
startStreamInputTts
双方向ストリーミング合成を開始し、サービスへの接続を開き、イベントと音声データのコールバックを登録します。
このメソッドはブロックされる可能性があります。非 UI スレッドで呼び出してください。
メソッドシグネチャ:
| パラメータ | 型 | 説明 |
|---|---|---|
callback | INativeStreamInputTtsCallback | イベントおよびデータコールバックインターフェースの実装。 |
ticket | String | 認証、接続、およびデバッグ設定を保持するJSON文字列。以下のticketパラメータリファレンスを参照してください。 |
parameters | String | 音声合成の出力を制御するJSON文字列。以下のパラメータリファレンスを参照してください。 |
session_id | String | クライアント指定のセッションID。省略した場合、サーバーが自動的に生成します。 |
log_level | int | SDKの内部ログの詳細度を制御します。有効な値:
|
save_log | boolean | ログをローカルファイルに書き込むかどうか。trueの場合、ticket内のdebug_pathを設定して保存先を指定し、オプションでmax_log_file_sizeを設定してファイルサイズの上限を指定します。 |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
url | String | はい | サービスアドレス:
{WorkspaceId}を実際のワークスペースIDに置き換えます。 |
apikey | String | はい | ご自身のAPIキー。長期間有効なキーが漏洩した場合の影響範囲を制限するには、代わりに短期間有効な一時的なAPIキーを使用してください。 |
device_id | String | はい | エンドユーザーの一意の識別子。アプリ内のユーザーIDまたはクライアント生成のデバイス識別子に設定します。このIDは主にログの相関付けとトラブルシューティングに使用されます。 |
complete_waiting_ms | int | いいえ | stopメソッドを呼び出した後、タイムアウトする前にSTREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETEイベントを待機する時間(ミリ秒単位)。デフォルト:10000。 |
debug_path | String | いいえ | ログファイルが書き込まれるローカルパス。このパラメータは、startStreamInputTts、playStreamInputTts、またはasyncPlayStreamInputTtsにおいてsave_logがtrueに設定されている場合にのみ有効です。その場合、パスは必須です。それ以外の場合、呼び出しはエラーを返します。デバイスには最大2つのログファイルが保持されます。 |
max_log_file_size | int | いいえ | ログファイルの最大サイズ (バイト単位)。このパラメータは、startStreamInputTts、playStreamInputTts、またはasyncPlayStreamInputTtsにおいてsave_logがtrueに設定されている場合にのみ有効です。デフォルト: 104857600 (100 × 1024 × 1024バイト、または100 MiB)。 |
log_track_level | int | いいえ | ログコールバック(onStreamInputTtsLogTrackCallback)を通じて配信されるログのフィルターレベル。デフォルト:2。有効な値:
log_track_levelは、startStreamInputTts、playStreamInputTts、またはasyncPlayStreamInputTtsで設定されるlog_levelと連動して、どのログがコールバックに到達するかを決定します。ログエントリが配信されるには、log_track_levelとlog_levelの両方以上のレベルである必要があります。たとえば、log_track_levelが2(INFO)でlog_levelが3(WARNING)の場合、WARNING以上(レベル >= 3)のみがコールバックに到達します。 |
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
model | String | はい | モデル名。 |
voice | String | はい | 音声合成に使用される音声。
|
format | String | いいえ | オーディオエンコーディング形式。有効な値:
|
enable_audio_decoder | boolean | いいえ | SDKの内部デコーダーを有効にするかどうか。デフォルト: false。このパラメータは、音声エンコーディングフォーマットがopusまたはmp3の場合にのみ有効になります。有効にすると、SDKはopusまたはmp3の音声データをPCMデータにデコードしてから返します。 |
volume | int | いいえ | 音量レベル。デフォルト値:50。有効な値:[0, 100]。 |
sample_rate | int | いいえ | オーディオサンプルレート (Hz)。有効な値: 8000、16000、22050 (デフォルト)、24000、44100、48000。 |
rate | float | いいえ | 話速。デフォルト値:1.0。有効な値:[0.5, 2.0]。 |
pitch | float | いいえ | ピッチ。デフォルト値:1.0。有効な値:[0.5, 2.0]。 |
bit_rate | int | いいえ | kbps単位の音声ビットレート。音声フォーマットがmp3またはopusの場合、bit_rateを使用してビットレートを調整します。デフォルト値:32。有効な値:[6, 510]。 |
enable_ssml | boolean | いいえ | SSMLを有効にするかどうか。デフォルト:false。
|
word_timestamp_enabled | boolean | いいえ | 単語レベルのタイムスタンプを有効にするかどうかを指定します。デフォルト値:false。ストリーミング出力モードでのみ利用可能です。サポートされている音声:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-flash、cosyvoice-v3-plus、cosyvoice-v2のクローン音声、ならびにCosyVoice音声リストでサポート対象としてマークされているシステム音声。他のモデルのクローン音声では、この機能はサポートされていません。
単語のタイムスタンプは、 |
seed | int | いいえ | 合成出力のバリエーションを制御するためのランダムシード。モデルバージョン、テキスト、音声、およびその他のパラメータが変更されていない場合、同じシードを使用すると同一の結果が生成されます。デフォルト値:0。有効な値:[0, 65535]。 |
language_hints | String[] | いいえ | 出力品質を向上させるために音声合成のターゲット言語を指定します。数字の発音、略語の展開、記号の読み上げ、または少数民族言語の合成が期待通りでない場合は、このパラメータを使用します。例:
有効な値
|
instruction | String | いいえ | 方言、感情、話し方などの合成特性を制御します。使用法の詳細については、指示制御を参照してください。 |
enable_aigc_tag | boolean | いいえ | 生成された音声にAIGCウォーターマークを埋め込むかどうかを指定します。trueに設定すると、サポートされているフォーマット(wav/mp3/opus)の音声ファイルにウォーターマークが埋め込まれます。デフォルト値:false。 cosyvoice-v3-flash、cosyvoice-v3-plus、cosyvoice-v2のみがこの機能をサポートしています。 |
aigc_propagator | String | いいえ | AIGCウォーターマークのContentPropagatorフィールドを設定し、コンテンツ伝播者を識別します。enable_aigc_tagがtrueの場合にのみ有効になります。デフォルト値: Alibaba Cloud UID。cosyvoice-v3-flash、cosyvoice-v3-plus、cosyvoice-v2のみがこの機能をサポートしています。 |
aigc_propagate_id | String | いいえ | AIGCウォーターマークのPropagateIDフィールドを設定し、特定の伝播アクションを一意に識別します。enable_aigc_tagがtrueの場合にのみ有効になります。デフォルト値: 現在の音声合成リクエストのリクエストID。cosyvoice-v3-flash、cosyvoice-v3-plus、cosyvoice-v2のみがこの機能をサポートしています。 |
hot_fix | object | いいえ | 指定された単語の発音をカスタマイズしたり、合成前にテキストを置換したりするためのテキストホットフィックス設定。 cosyvoice-v2はこの機能をサポートしていません。
|
enable_markdown_filter | boolean | いいえ | この機能はcosyvoice-v3-flashのクローン音声のみでサポートされています。
|
sendStreamInputTts
合成するテキストを送信します。このメソッドはstartStreamInputTtsと一緒に使用します。
startStreamInputTtsを呼び出した後、このメソッドを呼び出してテキストを継続的にプッシュします。
すべてのテキストを送信したら、stopStreamInputTtsまたはasyncStopStreamInputTtsを呼び出して入力を終了します。
メソッドシグネチャ:
| パラメータ | 型 | 説明 |
|---|---|---|
text | String | 合成するテキスト。SSMLはサポートされていません。入力内のSSMLタグは解析されず、プレーンテキストとして読み上げられます。 |
stopStreamInputTts
すべてのテキストが送信されたことをサーバーに通知し、すべての音声が合成されてSTREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETEイベントが受信されるまでブロックする同期メソッド。
待機タイムアウトはcomplete_waiting_msによって制御されます。
メソッドシグネチャ:
asyncStopStreamInputTts
すべてのテキストが送信されたことをサーバーに通知する非同期メソッド。呼び出しはすぐに戻り、合成はバックグラウンドで続行されます。
合成が完了したことを検出するには、STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETEイベントを使用します。
メソッドシグネチャ:
cancelStreamInputTts
サーバーへの接続を即座に閉じ、現在の合成タスクを中止します。この呼び出しの後、それ以上の音声コールバックは配信されません。
メソッドシグネチャ:
playStreamInputTts
同期一括合成メソッド。呼び出しはテキストを送信し、音声の受信中はブロックされ、合成が完了した後にのみ戻ります。その後、stopメソッドを呼び出す必要はありません。
このメソッドではSSMLがデフォルトで有効になっています。オーバーライドするには、enable_ssmlを明示的に設定してください。
このメソッドは非UIスレッドで呼び出してください。
メソッドシグネチャ:
startStreamInputTtsと同じ意味を持ちます。
| パラメータ | 型 | 説明 |
|---|---|---|
text | String | 合成するテキスト。SSMLをサポートします。 |
asyncPlayStreamInputTts
非同期一括合成メソッド。呼び出しはすぐに戻り、合成はバックグラウンドで実行され、結果はコールバックを通じて配信されます。その後、stopメソッドを呼び出す必要はありません。
このメソッドではSSMLがデフォルトで有効になっています。オーバーライドするには、enable_ssmlを明示的に設定してください。
メソッドシグネチャ:
startStreamInputTtsと同じ意味を持ちます。
| パラメータ | 型 | 説明 |
|---|---|---|
text | String | 合成するテキスト。SSMLをサポートします。 |
INativeStreamInputTtsCallback
CosyVoiceストリーミングTTSコールバックインターフェースは、合成イベント、音声データ、およびログを配信します。
onStreamInputTtsEventCallback: イベントの受信
メソッドシグネチャ:
| パラメータ | 型 | 説明 |
|---|---|---|
event | StreamInputTtsEvent | 配信されるイベント。 |
task_id | String | 合成タスクID。 |
session_id | String | セッションID。クライアントから指定された場合はそのまま返されます。省略された場合はサーバーで生成されます。 |
ret_code | int | エラーコード。STREAM_INPUT_TTS_EVENT_TASK_FAILEDイベントでのみ有効です。 |
error_msg | String | エラーメッセージ。STREAM_INPUT_TTS_EVENT_TASK_FAILEDイベントでのみ有効です。 |
timestamp | String | 合成結果のタイムスタンプ情報。 |
all_response | String | 完全なJSONレスポンス。必要な追加データを抽出するために解析してください。 |
onStreamInputTtsDataCallback: オーディオデータの受信
SDKは合成中にこのコールバックを繰り返し呼び出します。コールバックから音声データを読み取ります。
メソッドシグネチャ:
| パラメータ | 型 | 説明 |
|---|---|---|
data | byte[] | 現在のセグメントのオーディオデータ。以下の用途に使用します:
|
onStreamInputTtsLogTrackCallback: トレースログの受信
このコールバックを使用してSDKから詳細な内部ログを受信します。これはトラブルシューティングとデバッグに役立ちます。
メソッドシグネチャ:
StreamInputTtsEvent
CosyVoiceストリーミング音声合成のイベントタイプ列挙型。
| イベント | 説明 |
|---|---|
STREAM_INPUT_TTS_EVENT_SYNTHESIS_STARTED | サーバーがリクエストを受け付け、処理を開始しました。このイベントの直後に、onStreamInputTtsDataCallbackが最初の音声データを返し始めます。 |
STREAM_INPUT_TTS_EVENT_SENTENCE_SYNTHESIS | 課金データを含む、合成に関するランタイム情報。 |
STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE | サーバーがすべての音声データを送信し、onStreamInputTtsEventCallbackは再度呼び出されません。このイベントは、音声ストリームが終了したことを明示的に示すシグナルです。 |
STREAM_INPUT_TTS_EVENT_TASK_FAILED | タスクが失敗しました。原因を特定するには、INativeStreamInputTtsCallbackのall_responseフィールドでtask_id、error_code、およびerror_messageを確認してください。 |
サンプルコード
-
APIキーの取得: APIキーの取得。セキュリティのため、APIキーは環境変数に保存してください。
サードパーティアプリやユーザーに一時的なアクセスを許可する必要がある場合、または機密データへのアクセスや削除などの高リスク操作を厳密に制御したい(want)場合は、一時的なAPIキーを使用してください。一時的なAPIキーは60秒間有効であり、その後は新しいキーをリクエストする必要があります。
-
SDKをダウンロードしてサンプルコードを実行します:
- 最新のSDKパッケージをダウンロードします。
- パッケージを解凍します。AARフォーマットのSDKは
app/libsにあります。これをプロジェクトの依存関係に追加してください。Android C++統合の場合、ZIP内のandroid_libsから共有ライブラリを、android_includeからヘッダーを取得します。 - Android Studioでプロジェクトを開きます。サンプルコードは
DashCosyVoiceStreamTtsActivity.javaにあります。APIキーをご自身のものに置き換えて、機能を試してください。
呼び出しモード
| モード | 説明 |
|---|---|
| 一括テキスト入力 | 手順:
|
| ストリーミングテキスト入力 | 手順:
|
高度な機能
SSMLマークアップ
目的:テキストにXMLタグを埋め込んで、発音、話す速度、ポーズ、その他の韻律の詳細を微調整します。
制限事項: SSMLは一括テキスト入力(playStreamInputTtsまたはasyncPlayStreamInputTtsメソッド)でのみサポートされています。ストリーミングテキスト入力(sendStreamInputTtsメソッド)ではSSMLはサポートされていません。
使用法:playStreamInputTtsまたはasyncPlayStreamInputTtsを呼び出すと、SDKはSSMLを自動的に有効にします。SSMLタグを含むテキストをtextパラメータを通じて渡してください。
詳細については、SSMLを参照してください。
数式
目的:モデルに一般的な数式や表現を正しく読み上げさせます。
使用法:LaTeX形式の数式を含むテキストをtextパラメータを通じて渡します。詳細については、LaTeX数式を音声に変換する(中国語のみ)を参照してください。