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