feat: convert wav to mp3 and save
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
import ffmpeg from "fluent-ffmpeg";
|
||||||
|
|
||||||
// VOICEVOX APIの設定
|
// VOICEVOX APIの設定
|
||||||
const VOICEVOX_HOST = import.meta.env["VOICEVOX_HOST"];
|
const VOICEVOX_HOST = import.meta.env["VOICEVOX_HOST"];
|
||||||
@ -61,10 +62,29 @@ export async function generateTTS(
|
|||||||
fs.mkdirSync(outputDir, { recursive: true });
|
fs.mkdirSync(outputDir, { recursive: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
const filePath = path.resolve(outputDir, `${itemId}.wav`); // Use the provided filename directly
|
const wavFilePath = path.resolve(outputDir, `${itemId}.wav`);
|
||||||
console.log(`音声ファイル保存開始: ${filePath}`);
|
const mp3FilePath = path.resolve(outputDir, `${itemId}.mp3`);
|
||||||
fs.writeFileSync(filePath, audioBuffer);
|
|
||||||
console.log(`音声ファイル保存完了: ${filePath}`);
|
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user