编码Amazon Lex的语音输入?

问题描述 投票:0回答:2

我对Amazon Lex的语音输入编码有问题。

如果我将InputStream指定为null,它可以工作,我收到Lex的默认语音答案:“我能帮助你”

            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秒后Lex服务器将返回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文件以使其与Amazon Lex一起使用?顺便说一句,我使用Visual Studio 2017,C#与NAudio库。

c# amazon-web-services audio-streaming amazon-lex
2个回答
0
投票

亚马逊Lex希望音频采用PCM或Opus格式(有关详细信息,请阅读此documentation)。您可以从亚马逊中引用此AI blog post以获取有关如何对您的wav音频进行PCM编码的更多信息。


0
投票

对于c#,AWSSDk中似乎存在某种问题 - 发生的事情是Lex服务返回了纯文本错误消息,并且SDK正试图将其解析为JSON。有时您可以深入了解异常详细信息并找到原始响应,或者只使用Fiddler。

© www.soinside.com 2019 - 2024. All rights reserved.