以下に、VoiceVoxのサーバーAPIを利用して複数行のテキストを1つの音声ファイルに変換するJavaScriptプログラムの例を示します。このプログラムでは、Node.js環境を前提としています。
http://127.0.0.1:50021
)。axios
パッケージをインストールする必要があります。npm install axios
const axios = require('axios');
const fs = require('fs');
// VoiceVoxサーバーのURL
const VOICEVOX_URL = '<http://127.0.0.1:50021>';
/**
* テキストを音声合成し、1つの音声ファイルに保存する
* @param {string[]} lines - 複数行のテキスト
* @param {string} outputPath - 出力先の音声ファイルパス
*/
async function synthesizeSpeech(lines, outputPath) {
try {
// 結合された音声データを格納するバッファ
let audioBuffers = [];
for (const line of lines) {
if (!line.trim()) continue; // 空行はスキップ
// 1. 音声クエリを作成
const queryRes = await axios.post(`${VOICEVOX_URL}/audio_query`, null, {
params: {
text: line,
speaker: 1, // 話者ID(適宜変更可能)
},
});
// 2. 音声を生成
const synthRes = await axios.post(`${VOICEVOX_URL}/synthesis`, queryRes.data, {
params: { speaker: 1 },
responseType: 'arraybuffer', // 音声データはバイナリとして受け取る
});
audioBuffers.push(Buffer.from(synthRes.data));
}
// 3. すべての音声データを結合
const combinedAudio = Buffer.concat(audioBuffers);
// 4. ファイルに保存
fs.writeFileSync(outputPath, combinedAudio);
console.log(`音声ファイルを生成しました: ${outputPath}`);
} catch (error) {
console.error('音声合成中にエラーが発生しました:', error.message);
}
}
// 複数行のテキスト
const lines = [
'こんにちは。',
'今日は良い天気ですね。',
'VoiceVoxのAPIを使った音声合成を試しています。'
];
// 出力先の音声ファイルパス
const outputPath = 'output.wav';
// 音声合成を実行
synthesizeSpeech(lines, outputPath);
audio_query
エンドポイントでクエリを作成。synthesis
エンドポイントで音声データを生成。speaker
パラメータは話者を指定します。VoiceVoxで利用可能な話者IDを確認してください。wav
です。他の形式が必要な場合は、追加のライブラリ(例: FFmpeg)を利用してください。このコードを参考に、必要に応じてカスタマイズしてください!
以下は、fetch
APIを使用してVoiceVoxのサーバーAPIを利用し、複数行のテキストを1つの音声ファイルに変換するJavaScriptコードの例です。