Sto usando il seguente metodo per riprodurre un array di byte contenente dati wav. La funzione viene chiamata da un progetto GWT.Come si gioca a wav audio byte array tramite javascript/html5?
Questa funzione riproduce il suono, ma suona come una sorta di mostro infernale. La frequenza di campionamento è sicuramente corretta (il suono viene generato da neospeech) e ho provato tutti i tipi di valori per numberOfSamples, che sembra rappresentare la durata dei dati audio.
Un valore superiore a 30000 per numberOfSamples riproduce l'intera lunghezza del file audio ma è confuso e orribile.
Quindi, cosa sto sbagliando?
function playByteArray(byteArray, numberOfSamples) {
sampleRate = 8000;
if (!window.AudioContext) {
if (!window.webkitAudioContext) {
alert("Your browser does not support any AudioContext and cannot play back this audio.");
return;
}
window.AudioContext = window.webkitAudioContext;
}
var audioContext = new AudioContext();
var buffer = audioContext.createBuffer(1, numberOfSamples, sampleRate);
var buf = buffer.getChannelData(0);
for (i = 0; i < byteArray.length; ++i) {
buf[i] = byteArray[i];
}
var source = audioContext.createBufferSource();
source.buffer = buffer;
source.connect(audioContext.destination);
source.start(0);
}
Grande roba, ho cercato per una concisa, ad esempio bollito-down come questo –