2017-11-03 4 views
2

私は、オーディオを含むバイト配列を返すWepAPI C#RESTサービスを作成しようとしています(この場合はAWS PollyのTTSサービスによって生成されます)。私は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/TqU1sShPpYHosrBgAK0hO3 RncHhKDEJGGz/FAYYRp // NgxBUdMZaiPnpGPA6ujaRwJC4JtKhc + K1xQfPoHSIkKlQd1UKRZCYaqScCIXA0tMR // vUBCyjIh/L/45CcBCwlEJRyhr3l8VQ4UAr58q4aAz54eC5QAMXrPCXxLOtmQqbEI81/VGwF/sv0KiXN4QU6AXPpdjW5eMn3BeRQJWQ4oFQVDEWCCkQ2gtWVNUHFjVGEi03wcFQADQ9T // NixC8p7AKeXtLFOVoHPIiiLWTYWRLnltlr65IHnKUex3SmTBvQhhkc5mDlQ8rOwoQ4nHyp/+ L256laVKlSsvLjQ6rKXKyBvm6JIg0Jhz3Lfyq6GWVs3n1tFyR3KIKTyJ88ZX/qGChwJS1cXOjN // // GV 7r298nKvKdiFFApiHb /// + ERXv6BvAT1n7zaqF2QuCobM4QWqHWvBaB // zYsQXI7wGtZbDBQ9DvlNOgBEI002KKCsV/coYjD0agBeiI0aTjdTAkWFknV4wP49wtdjC1dTW3I7wrmbH8DO3n/SVLlkI4Um0YYE4kKCeRp26IZfIQK68m5TGOyN/1QERTBm1RtP8/M//// ro41zmV4YpBYUx2CCjkf/+/tchiocI7KyBVtx5EUrbbVtRA6u2BykrR5ghhPHchAj/82LEGB0Ccso + eMs26cbgjGTy + pAbbbbJ2I6Nc62XUCBv1QYiGg/AjeHhu8FO4USSCW // 9eG2HirTXQjXSkbhlErRKaGVQy/stfpqVv/7GMcKOLOIj7lee /// MtOIAkLLe/260bAVKCGAMMA1UQt9/S4fAvaSnYM9csx + CMxbH4PSwbhoiPBelklpWsc5cUIchknksdcPt/6jAJaK // NgxDQeo/6mPnjFJbxfyuhQZ1F2/618iggxoUpYUKJhTPRxTshWsuy9Hzf1LT/9zOpnQ7MhWr/83 /////rZKEORznIZ1Men3Mk6GutGaYlBTtl6kOQKsFSi7CpkSOf3/lSBOr1sjEcJTNMez 3HFYbn1G11vimF36YhUS1TwHyhrCXe8h68i1qm7eDtVB5gjsn/1PQgRWIEyqU6o // NixEge6 + qhnsLFCVw6OY5nVHRr6lyf4yLKa77 + eS5kOy2dfk ////// + TOYtTKUIqRCo1l/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/QB pAYNhD/SN/yLDcbpb06tCzq7f/5F5f6ruLf/wxy4aW1y4Te/Ss67U9XuKDySSFEBAchrz1PBJSTD8kHDSIGtaYU/U7TU0/YMAntgFPwsYSUef/zYsShH0KyqjbCRrrHoMxEov5ZjOl5atnu1uj1HAIugNeJsalA1LBg2oJ3HKMNBgqGfxP0NWyORCsb0dUdU6tqVnRJFo8pqobR2261bT /// 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/ADDBtSqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo =」

大歓迎任意のヘルプ...

+0

音声はテキストではありません。どうしても助けにならないので、質問から削除してください。 –

+0

これはbase64でエンコードされたバイト配列のようです - まずbase64でデコードしてみましたか? – xxbbcc

+0

私はしていません。私はその文字列が何であるか分かりません。私は確かにそれをエンコードしていないので、私は混乱しています。 – smatthews1999

答えて

0

あなたは、受信したデータはbase64エンコードです。実際にオーディオとして再生するには、まずバイト配列にbase64デコードする必要があります。 (私はこれを行い、質問に添付されたデータは保存後mpga/mp3ファイルです)。

関連する問題