2017-09-24 102 views
0

我需要轉換緩衝音頻文件.m4a的緩衝音頻文件.WAV用於發送給Google通過的NodeJS轉換.M4A爲.wav

var toWav = require('audiobuffer-to-wav') 
var xhr = require('xhr') 
var context = new AudioContext() 

// request the MP3 as binary 
xhr({ 
    uri: 'audio/track.mp3', 
    responseType: 'arraybuffer' 
}, function (err, body, resp) { 
    if (err) throw err 
    // decode the MP3 into an AudioBuffer 
    audioContext.decodeAudioData(resp, function (buffer) { 
    // encode AudioBuffer to WAV 
    var wav = toWav(buffer) 

    // do something with the WAV ArrayBuffer ... 
    }) 
}) 

我有錯誤

AudioContext is not defined 
+0

然後會發生什麼? – TGrif

+0

所以我嘗試使用audiobuffer-to-wav但是AudioContext()是錯誤的 – otaroo

+0

具體是什麼錯誤? – TGrif

回答

0

如果語音API你需要使用這個庫服務器端,你可以使用web-audio-api包模擬AudioContext功能。

const fs = require('fs'); 
const toWav = require('audiobuffer-to-wav'); 
const AudioContext = require('web-audio-api').AudioContext; 
const audioContext = new AudioContext; 

let resp = fs.readFileSync('sample.m4a'); 

audioContext.decodeAudioData(resp, buffer => { 
    let wav = toWav(buffer); 
    // do something with the WAV ArrayBuffer ... 
}); 
+0

我在後端使用節點 – otaroo

+0

是的,我明白了。 – TGrif

+0

我將用服務器端的用法更新我的答案。 – TGrif