gpt4 book ai didi

javascript - 我如何通过 Web 声音 API 播放一段声音样本?

转载 作者:行者123 更新时间:2023-12-03 05:45:38 24 4
gpt4 key购买 nike

我有一个总持续时间为 3 秒的“asd.wav”样本并播放它:

let source = audioCtx.createBufferSource();
source.buffer = buffer; // recieved buffer of asd.wav
source.connect(audioCtx.destination);
source.start(0);

它在 0.00 到 3.00 秒之间播放完美,但我如何才能仅在 1.00 到 2.00 秒之间播放此示例?

最佳答案

这应该可以解决问题。也许可以用更简单的方式来完成,但这就是我能想到的。

var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var getSound = new XMLHttpRequest();
getSound.open("GET", "./asd.wav", true);
getSound.responseType = "arraybuffer";
getSound.onload = function() {
audioCtx.decodeAudioData(getSound.response, function(buffer) {
let start_time = 1, end_time = 2, sample_rate = buffer.sampleRate,
channel_number = 0; // assuming a mono (one channel) audio
let source = audioCtx.createBufferSource();
let data = buffer.getChannelData(channel_number);
data = data.slice(start_time * sample_rate, end_time * sample_rate)
let new_buffer = audioCtx.createBuffer(1 /*number of channels =1*/ , data.length, sample_rate);
new_buffer.copyToChannel(data, 0);
source.buffer = new_buffer
source.connect(audioCtx.destination);
source.start(0);
});
};

getSound.send();

如果是多 channel 音频,您需要重复这些步骤将数据复制到每个 channel 。

关于javascript - 我如何通过 Web 声音 API 播放一段声音样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com