Skip to main content

Qwen-Audio-TTS Node.js SDK

音声 Node.js SDK から Qwen-Audio-TTS を呼び出し、一括またはストリーミングのテキスト入力から音声を生成して、単語タイムスタンプと使用量イベントを処理します。

SDK のインストール

Node.js 18 以降が必要です。SDK 0.1.0 パッケージをダウンロードし、プロジェクトで次を実行します。
npm install ./dashscope-sdk-nodejs-0.1.0.tgz

クイックスタート

コンソールで API キーを取得し、環境変数 DASHSCOPE_API_KEY に設定します。 次のサンプルを example.mjs として保存し、node example.mjs を実行します。
import { writeFile } from 'node:fs/promises'
import { SpeechSynthesizer } from 'dashscope-sdk-nodejs/tts'

const synth = new SpeechSynthesizer({
  apiKey: process.env.DASHSCOPE_API_KEY,
  workspaceId: process.env.DASHSCOPE_WORKSPACE_ID,
  baseUrl: 'dashscope-intl.aliyuncs.com',
  model: 'qwen-audio-3.1-tts-flash',
  voice: 'longanhuan_v3.1',
  format: 'mp3',
  sampleRate: 24000,
})
synth.on('error', err => console.error(err.code, err.message))

try {
  const audio = await synth.synthesize('Hello, welcome to Qwen Audio.')
  await writeFile('output.mp3', audio)
} finally {
  synth.close()
}

API リファレンス

コンストラクターのオプション

SpeechSynthesizer のコンストラクターオプション:
パラメーター型必須説明
apiKeystringいいえAPI キー。デフォルトは DASHSCOPE_API_KEY。
workspaceIdstringいいえワークスペース ID。デフォルトは DASHSCOPE_WORKSPACE_ID。
baseUrlstringいいえサービスホスト名を dashscope-intl.aliyuncs.com(シンガポール)に設定します。
modelstringいいえモデル ID。デフォルト:qwen-audio-3.1-tts-flash。
voicestringはい音色 ID。モデルに対応する音色を選択します。
format'pcm' | 'wav' | 'mp3' | 'opus'いいえ音声エンコーディング。省略時はサービスのデフォルト値を使用します。
sampleRate8000 | 16000 | 22050 | 24000 | 44100 | 48000いいえ音声サンプリングレート(Hz)。エンコーディングに合わせます。省略時はサービスが決定します。
volumenumberいいえ音量:[0,100]。サービスのデフォルト:50。
ratenumberいいえ話速:[0.5,2.0]。サービスのデフォルト:1.0。
pitchnumberいいえピッチ:[0.5,2.0]。サービスのデフォルト:1.0。
wordTimestampEnabledbooleanいいえ単語タイムスタンプを返すか。デフォルト:false。
languageHintsstring[]いいえ対象言語のヒント。最初の要素のみ有効です。
instructionstringいいえ方言、感情、役割などの合成指示。
parametersTtsSynthesisParametersいいえ追加の合成パラメーター(enable_ssml、seed、hot_fix など)。
connectTimeoutMsnumberいいえ接続タイムアウト(ms)。デフォルト:10000。
taskTimeoutMsnumberいいえ開始・終了確認のタイムアウト(ms)。デフォルト:60000。0 で無効化します。
parameters.enable_ssmlbooleanいいえSSML を有効化します。タスクごとに完全な空でない SSML テキストを 1 回送信します。制限を参照してください。
parameters.bit_ratenumberいいえMP3/Opus のビットレート(kbps)。範囲:[6,510]、デフォルト:32。
parameters.seednumberいいえ乱数シード:[0,65535]。
parameters.hot_fixRecord<string, unknown>いいえparameters.hot_fix で渡すホットフィックス設定。構造はクライアントイベントを参照してください。

主なメソッド

メソッド戻り値説明
synthesize(text: string)Promise<Buffer>最大 20000 文字のテキストを合成し、音声を返します。
begin()Promise<void>ストリーミング合成タスクを開始し、テキストを送信可能にします。
sendText(text: string)voidテキスト片を送信します。1 回最大 20000 文字、タスク合計最大 200000 文字。
end()Promise<Buffer>テキスト入力を終了し、合成完了後に全音声を返します。
cancel()void合成のキャンセルを要求します。
close(code?: number, reason?: string)void接続を閉じてタスクのリソースを解放します。

コールバックイベント

on(event, listener) でコールバックを登録します。全フィールドはサーバーイベントを参照してください。
イベントペイロード説明
started{ taskId: string }タスクが開始し、入力を受け付けます。
audioBufferバイナリ音声チャンク。複数回発生する場合があります。
sentenceBegin{ index: number; text: string }文の合成が開始しました。
sentenceEnd{ index: number; text: string; characters?: number; words?: TtsWord[]; usage?: TtsUsage }文の合成が完了しました。単語タイムスタンプと元の使用量を含む場合があります。
finished{ taskId: string; characters?: number; usage?: TtsUsage }タスクが終了し、ローカルのタスク状態がクリアされました。
failed / errorDashScopeError呼び出しエラー。code、message、リクエスト識別子を含みます。
close{ code: number; reason: string }基になる接続の切断通知。
eventServerEvent元のサービス JSON メッセージ。