2017-08-11 65 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。