function generateSilentAudio(durationInSeconds = 10, sampleRate = 16000) {
const numChannels = 2;
const byteRate = 4;
const blockAlign = numChannels * 2;
const sampleSize = 2;
const numSamples = Math.floor(durationInSeconds * sampleRate * numChannels);
const byteLength = numSamples * byteRate;
const buffer = new ArrayBuffer(byteLength);
const view = new DataView(buffer);
function writeString(view, position, string) {
for (let i = 0; i < string.length; i++) {
view.setUint8(position + i, string.charCodeAt(i));
}
}
writeString(view, 0, "RIFF");
view.setUint32(4, byteLength + 36, true);
writeString(view, 8, "WAVE");
writeString(view, 12, "fmt ");
view.setUint32(16, 16, true);
view.setUint16(20, 1, true);
view.setUint16(22, numChannels, true);
view.setUint32(24, sampleRate, true);
view.setUint32(28, sampleRate * blockAlign, true);
view.setUint16(32, blockAlign, true);
view.setUint16(34, sampleSize * 8, true);
writeString(view, 36, "data");
view.setUint32(40, numSamples * sampleSize, true);
const data = new Int16Array(buffer, 44, numSamples);
for (let i = 0; i < numSamples; i++) {
data[i] = 0;
}
return URL.createObjectURL(new Blob([buffer], { type: "audio/wav" }));
}
let len = 10
generateSilentAudio(len, 16000);
audio.addEventListener("loadedmetadata", function () {
console.log("generateSilentAudio-可以播放", audio.duration);
});