// 例: 外部から生のWAVデータ(ArrayBuffer)を受け取って再生するには
// playRawWavData(wavArrayBuffer, '受信音声.wav');
// 音声再生バーを動的に生成
const audioBar = document.createElement('div');
audioBar.className = 'audio-bar';
audioBar.innerHTML = `
`;
document.body.appendChild(audioBar);
const audioPlayer = document.createElement('audio');
audioPlayer.id = 'audioPlayer';
document.body.appendChild(audioPlayer);
const audioFile = document.getElementById('audioFile');
const playBtn = document.getElementById('playBtn');
const stopBtn = document.getElementById('stopBtn');
const fileName = document.getElementById('fileName');
let audioURL = null;
audioFile.addEventListener('change', function () {
const file = this.files[0];
if (file) {
if (audioURL) URL.revokeObjectURL(audioURL);
audioURL = URL.createObjectURL(file);
audioPlayer.src = audioURL;
playBtn.disabled = false;
stopBtn.disabled = false;
fileName.textContent = file.name;
}
});
playBtn.addEventListener('click', function () {
audioPlayer.play();
});
stopBtn.addEventListener('click', function () {
audioPlayer.pause();
audioPlayer.currentTime = 0;
});
audioPlayer.addEventListener('ended', function () {
audioPlayer.currentTime = 0;
});
// 生のWAVデータ(ArrayBuffer)を再生する関数
function playRawWavData(arrayBuffer, fileNameStr = 'audio.wav') {
// 既存のURLを解放
if (audioURL) URL.revokeObjectURL(audioURL);
// ArrayBufferからBlobを生成
const blob = new Blob([arrayBuffer], { type: 'audio/wav' });
audioURL = URL.createObjectURL(blob);
audioPlayer.src = audioURL;
playBtn.disabled = false;
stopBtn.disabled = false;
fileName.textContent = fileNameStr;
// 自動再生したい場合は下記を有効化
// audioPlayer.play();
}