feat: convert wav to mp3 and save

This commit is contained in:
2025-06-04 16:00:44 +09:00
parent 9b601c27f4
commit a50d54c206

View File

@ -1,5 +1,6 @@
import fs from "fs";
import path from "path";
import ffmpeg from "fluent-ffmpeg";
// VOICEVOX APIの設定
const VOICEVOX_HOST = import.meta.env["VOICEVOX_HOST"];
@ -61,10 +62,29 @@ export async function generateTTS(
fs.mkdirSync(outputDir, { recursive: true });
}
const filePath = path.resolve(outputDir, `${itemId}.wav`); // Use the provided filename directly
console.log(`音声ファイル保存開始: ${filePath}`);
fs.writeFileSync(filePath, audioBuffer);
console.log(`音声ファイル保存完了: ${filePath}`);
const wavFilePath = path.resolve(outputDir, `${itemId}.wav`);
const mp3FilePath = path.resolve(outputDir, `${itemId}.mp3`);
return path.basename(filePath);
console.log(`WAVファイル保存開始: ${wavFilePath}`);
fs.writeFileSync(wavFilePath, audioBuffer);
console.log(`WAVファイル保存完了: ${wavFilePath}`);
console.log(`MP3変換開始: ${wavFilePath} -> ${mp3FilePath}`);
await new Promise<void>((resolve, reject) => {
ffmpeg(wavFilePath)
.audioCodec("libmp3lame")
.format("mp3")
.on("end", () => {
console.log(`MP3変換完了: ${mp3FilePath}`);
fs.unlinkSync(wavFilePath); // WAVファイルを削除
resolve();
})
.on("error", (err) => {
console.error(`MP3変換エラー: ${err.message}`);
reject(err);
})
.save(mp3FilePath);
});
return path.basename(mp3FilePath);
}