我正在将谷歌语音 api 与科尔多瓦应用程序一起使用。
我正在录制音频并使用cordova插件“cordova-plugin-media”将其保存到我的本地驱动器,之后我正在使用cordova-plugin-file的readAsDataUrl()方法读回文件。这正在返回我的 base64 数据。
如果我将此 base 64 数据传递到 google api 服务器,它将始终返回空结果而没有任何错误。下面是相同的代码。
如果有人解决了类似的问题,请帮助我。
var src = "cdvfile://localhost/temporary/recording.m4a";
var mediaRec = new Media(src,
// success callback
function (data) {
console.log(data);
},
// error callback
function (err) {
});
// Record audio
//mediaRec.startRecord();
var _options = {
SampleRate: 16000,
NumberOfChannels: 1
};
mediaRec.startRecordWithCompression(_options);
$cordovaFile.readAsDataURL('cdvfile://localhost/temporary/', 'recording.m4a')
.then(function (success) {
console.log(success);
mediaRec.play();
var _payload = {
config: {
encoding: 'LINEAR16',
sampleRate: 16000,
languageCode: 'en-US',
maxAlternatives: 30
},
audio: {
content: success.split(',')[1]
}
};
$http.post('https://speech.googleapis.com/v1beta1/speech:syncrecognize?key={{api key}}', _payload)
.then(function (data) {
console.log(data);
}, function (error) {
console.log(error);
});
}, function (error) {
console.log(error);
});