2017-08-11 123 views
0

我遇到了Amazon Lex語音輸入編碼問題。爲亞馬遜Lex編碼語音輸入?

如果我給你的InputStream爲空,它的作品,我收到來自萊克斯默認的聲音回答:「我怎麼能幫助你」

  var amazonLexClient = new AmazonLexClient("APPID", "APPSECRET", Amazon.RegionEndpoint.USEast1); 
      var amazonPostRequest = new Amazon.Lex.Model.PostContentRequest(); 
      var amazonPostResponse = new Amazon.Lex.Model.PostContentResponse(); 
      amazonPostRequest.BotAlias = "BookTrip"; 
      amazonPostRequest.BotName = "BookTrip"; 
      amazonPostRequest.ContentType = "audio/l16; rate=16000; channels=1"; 
      amazonPostRequest.UserId = "user"; 
      amazonPostRequest.InputStream = null; 

      amazonPostResponse = await amazonLexClient.PostContentAsync(amazonPostRequest); 

如果我嘗試發送錄製的語音「你怎麼樣」使用編碼(由Lex需要:16KHz的,8位,1個通道)下面

  var amazonLexClient = new AmazonLexClient("APPID", "APPSECRET", Amazon.RegionEndpoint.USEast1); 
      var amazonPostRequest = new Amazon.Lex.Model.PostContentRequest(); 
      var amazonPostResponse = new Amazon.Lex.Model.PostContentResponse(); 
      amazonPostRequest.BotAlias = "BookTrip"; 
      amazonPostRequest.BotName = "BookTrip"; 
      amazonPostRequest.ContentType = "audio/l16; rate=16000; channels=1"; 
      amazonPostRequest.UserId = "user"; 
      amazonPostRequest.InputStream = new MemoryStream(); 

      WaveFormat target = new WaveFormat(16000, 8, 1); 
      WaveStream streamIn = new WaveFileReader("F:\\Whatever.wav"); 
      WaveFormatConversionStream str = new WaveFormatConversionStream(target, streamIn); 
      WaveFileWriter.WriteWavFileToStream(amazonPostRequest.InputStream, str); 

      amazonPostResponse = await amazonLexClient.PostContentAsync(amazonPostRequest); 

然後,它不工作,經過約20〜25秒萊克斯服務器將返回null。

Amazon.Runtime.AmazonUnmarshallingException: 'Error unmarshalling response back from AWS.' 
NullReferenceException: Object reference not set to an instance of an object. 

enter image description here

誰能告訴我如何編碼WAV文件,使之與亞馬遜萊克斯工作? Btw即時通訊使用Visual Studio 2017,C#與NAudio庫。

+0

請閱讀[問]。您不應將代碼作爲圖像發佈,而應將文字發佈爲 –

+0

您是否找到解決方案? – Milk

+0

[Lex chatbot C#客戶端語音]可能重複(https://stackoverflow.com/questions/45026213/lex-chatbot-c-sharp-client-with-voice) – Oliver

回答

0

Amazon Lex期望音頻採用PCM或Opus格式(詳情請閱讀documentation)。您可以參考亞馬遜的AI blog post獲取更多關於如何對您的wav音頻進行PCM編碼的信息。

0

AWSSDk內部似乎存在某種問題的c# - 發生的事情是Lex服務返回了純文本錯誤消息,並且SDK試圖將其解析爲JSON。有時你可以挖掘異常細節並找到原始響應,或者只使用Fiddler。