gpt4 book ai didi

javascript - 传递和使用包含音频数据的字节数组的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:11 25 4
gpt4 key购买 nike

我一直在尝试创建一个WepAPI C#REST服务,该服务将返回一个包含音频的字节数组(由TTS服务生成,在本例中为AWS Polly)。我不知道如何在javascript客户端中使用数组。

我的WebAPI服务如下...

var client = new AmazonPollyClient("secret", "secret", Amazon.RegionEndpoint.USWest2);

var ssreq = new SynthesizeSpeechRequest();
ssreq.Text = "hello world";
ssreq.VoiceId = VoiceId.Nicole;

var ttsresp = new TTSResp();

//// mp3 request
ssreq.OutputFormat = OutputFormat.Mp3;
var ssresp1 = client.SynthesizeSpeechAsync(ssreq).GetAwaiter().GetResult();
var ms = new MemoryStream();
ssresp1.AudioStream.CopyTo(ms);
var bytes = ms.ToArray();
ttsresp.Audio = ms.ToArray();

return Ok(ttsresp);

我返回对象的原因是我想附加其他元数据。

我的JavaScript客户端如下...
var context;    // Audio context
var buf; // Audio buffer

window.onload = function () {
context = new AudioContext();
}

function getSound() {

$.ajax({
url: 'api/test',
success: function (data) {
console.log('success', data);

var u8a = new Uint8Array(data.Audio.length);
u8a.set(new Uint8Array(data.Audio), 0);

//error here - DOMException: Unable to decode audio data
context.decodeAudioData(u8a.buffer, play);
},
fail: function (err) {
console.log('fail', err);
}
});
}

function play(audioBuffer) {
var source = context.createBufferSource();
source.buffer = audioBuffer;
source.connect(context.destination);
source.start(0);
}

我返回的音频字节如下...

“SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3LjcxLjEwMAAAAAAAAAAAAAAA // NgxAAcg6HgCUYYAhABByYDAZMncRERHiCZNO7u97u4cDAwMXu8CAAAAIh1 + IIIF // oX13P / RU7 / 7 / + HBV / oiIiF /// o7u / xC93d3 //// ru7ue78RET / ru7uiIiIXoiIiJ / 8RERHf // REREREA3f / 3RECAAhAx4Jg / lwQBByxCqJDDDDDDCAP1SowfxIfRCxyC4kGlZw6SXF9Mc // NixB0mMwZxlY9oAJfCnGgSgOcNJd4WgT8pgkBSHp4iQq5fGBHGeGEEx + Ocpj4WIDOPYmH0v5cHuPQvDCHTyzEqMCAgXP + SDIMmS5KHBg0jQm1l5IomH / 907OouEmXTdNNZKc6cOILPrf // // 7kupBBalNW9DTQMFILM0kD1AM FV / GFQeAHXmVBE1RqMZyF0ym2viNtxFkdEhHorP / zYsQUJFM + jNfJQADQICELiAoPIHIZyi0Olh5JZYiQMNBqIIOB4gWPIJcws5r / g1Sz6ETFRURhEdDDyWPhH7uGILjFOWDh6INKsUlrWsO2 / 5PFNSxHi0GCKISEE2ti9 + 3 + 1xY27YcMUxSf9W0fbtP / 9KV / v + EQt4HTUC + G0B / Z / H + GWqMkMTny5dUbrTC / Y8LaLVyWequr6GvXN5v / 82LEEiM6boACekc2350qM8haFcQs0EAK0bpOnrRY + EArjfRJNiwmTvTrk1QqSs7txjFJqX + aunOMU04ImikmjyqygujJCZD / Tbd501Hdia8TSBEftaW / + + 8zf pLEVWyELWY6yq2zp6H0Tgo8HQE / tHeIGhcNruLHnwalhw / TqU1sShPpYHosrBgAK0hO3RncHhKDEJGGz / FAYYRp // NgxBUdMZaiPnpGPA6ujaRwJC4JtKhc + K1xQfPoHSIkKyQlYcRyCrJrCyCrYcR4B1B 58q4aAz54eC5QAMXrPCXxLOtmQqbEI81 / VGwF / sv0KiXN4QU6AXPpdjW5eMn3BeRQJWQ4oFQVDEWCCkQ2gtWVNUHFjVGEi03wcFQADQ9T // NixC8p7AKeXtLFOVoHPIiiLWTYWRLnltlr65IHnKUex3SmTBvQhhkc5mDlQ8rOwoQ4nHyp / + L256laVKlSsvLjQ6rKXKyBvm6JIg0Jhz3Lfyq6GWVs3n1tFyR3KIKTyJ88ZX / qGChwJS1cXOjN // // GV /// 7r298nKvKdiFFApiHb + ERXv6BvAT1n7zaqF2QuCobM4QWqHWvBaB // zYsQXI7wGtZbDBQ9DvlNOgBEI002KKCsV / coYjD0agBeiI0aTjdTAkWFknV4wP49wtdjC1dTW3I7wrmbH8DO3n / SVLlkI4Um0YYE4kKCeRp26IZfIQK68m5TGOyN / 1QERTBm1RtP8 /米//// ro41zmV4YpBYUx2CCjkf / + / tchiocI7KyBVtx5EUrbbVtRA6u2BykrR5ghhPHchAj / 82LEGB0Ccso + eMs26cbgjGTy + pAbbbbJ2I6Nc62XUCBv1QYiGg / AjeHhu8FO4USSCW // 9eG2HirTXQjXSkbhlErRKaGVQy / stfpqVv / 7GMcKOLOIj7lee /// MtOIAkLLe / 260bAVKCGAMMA1UQt9 / S4fAvaSnYM9csx + CMxbH4PSwbhoiPBelklpWsc5cUIchknksdcPt / 6jAJaK // NgxDQeo / 6mPnjFJbxfyuhQZ1F2 / 618iggxoUpYUKJhTPRxTshWsuy9Hzf1LT / 9zOpnQ7MhWr / 83 ///// rZKEORznIZ1Men3Mk6GutGaYlBTtl6kOQKsFSi7CpkSOf3 / lSBOr1sjEcJTNMez3HFYbn1G11vimF36YhUS1TwHyhrCXe8h68i1qm7eDtVB5gjsn / 1PQgRWIEyqU6o // NixEge6 + qhnsLFCVw6OY5nVHRr6lyf4yLKa77 + eS5kOy2dfk / ///// + TO YtTKUIqRCo1l / n2dpCuwssZ / L2LWpy2MB + yPf72xIDsjfK5B7texODy3WKRWOJAl9QyQM8KVcGrXTUXnNEQSbXhi / 4RzR3pxGsnM3pgOLTUejgIWjGqfITkJERaQqZw + 1XtPRztVzOlM / Y35ERhwULP / zYsRcH6ISul57CyQ0EkAgcD4ImsQmwiS // 99v4uDgYrmKxgIKMIFkjHEi4qTU5TEy1cC7bd4u1awa0SsY / Ae8uyoEOO0Qo7EFfA9sawkqeQ51nGU + 6ttXbzVhMq7wgJ55nXChS0FEfsZY9aevlk / 33 + / jdJRwIFI89WQT / JoPh4RLiy1PU5QNpQlAUSC5YssAgIa6fWx53 /// y7z / 82LEbR + pnrreeYVkHz4IOUZP / iouSMB4afBwaUE6Rcz5DmpRJrulGpB + RIQTFRG0KiAsjBnBsUzzLQiLUg7JdgLjf3Vu / 4P / hf6gbziG8XLmVa3pWKSuGHHOoGapqFJUg + okPdCl1bV9e / nynZDEzdWzIxiHSSjNV5FjGIh3Ui72LbST / ////// zXNKUrmGs57mX // + zT2AQK6Cu // NgxH4fs3bGNsvKm6JEtzw083 + 5glUlBncIGQ9RRss + Vit1ER0aZdeZTvdKrRXxugJE6jwbX49RdE397ou0aVNlaQH23IM4j9P9rIoofEqTxPQG1CPQRxuYmZpymu36qUpVcyFOjsyMWbYKJdFQu / purfQj ///// VOarialEyMShWCntPKDautDn0EshqEZOty23mzJRjtEBeDx // NixI4fO16uDsLE9h4JUKHGmvOupduG0iZ / OD8vR5mRGOXMuZzDj4eBFqxDD + Mf5S20TN0To7cxkF77M6mIZTPpn7FrYfl9Vd / QBpAYNhD /锡/ yLDcbpb06tCzq7f / 5F5f6ruLf / wxy4aW1y4Te / Ss67U9XuKDySSFEBAchrz1PBJSTD8kHDSIGtaYU / U7TU0 / YMAntgFPwsYSUef / zYsShH0Kyqjb CRrrHoMxEov5ZjOl5atnu1uj1HAIugNeJsalA1LBg2oJ3HKMNBgqGfxP0NWyORCsb0dUdU6tqVnRJFo8pqobR2261bT /// F / shg29B7 / S8yd06FUKBAUUAB1iA5FBagB + HE2HFpYFjc43J6btBPYWopIraLGmksYxrxhOD4IVr84xixs9q4 + CTSW / beWoiduciOn / 82LEtB1bOoh2yYS8ECTZCpnWejdMYY2zaf + ZpCqYGylKqp / pmVH9lLMKDA2KGKYVePc31O / lnXlToJCWxFH / W7XwM9pKUJQVCUl6YaGURzNLDOpOJurUY3BSwLsTcSmcFQqOkFholVBUSkJyde + SIA / yREXbEsxTHNxN40bYFRMVUkhQqbGC4IkBL5DIMkT1SVWuDJPlo / ECL ///// NgxM4dskZ1FsJEvP7PNAKygrUQZZST5 // + 0ErBVEtZ + 7Llq / NyUcJdAF / LV / CbpkiJQ19fs57zrFBUFRLViTAlhxoplIFFigi + akHNa8z1nDHlcsOYCspTprbiQOLQqCUVEMhmBuWTJKw / 3fXJsy0lSoTdNsydFUgnB + 4 + iPjErJFalcyxGJDBg4zayzzVlDA0lQ5Va3 / 1ZQcd // NixOYiClZMIsJMvGHfWGvsoYE5H / ZLDVla0mWVDWl / 7BaZ16KkaiP8Vb1Egr / JMgsRhIC2vGCyTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv / zYsTtIiqN / ADDBtSqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqoo =“

任何帮助,不胜感激...

最佳答案

您收到的数据是base64编码的。在实际将其播放为音频之前,需要对它进行base64解码为字节数组。 (我这样做了,保存后,问题附带的数据是mpga / mp3文件。)

关于javascript - 传递和使用包含音频数据的字节数组的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47102424/

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