【发布时间】:2017-08-11 12:02:35
【问题描述】:
我在为 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~25s后Lex server会返回null。
Amazon.Runtime.AmazonUnmarshallingException: 'Error unmarshalling response back from AWS.'
NullReferenceException: Object reference not set to an instance of an object.
谁能告诉我如何对 wav 文件进行编码以使其与 Amazon Lex 一起使用? 顺便说一句,我使用 Visual Studio 2017、C# 和 NAudio 库。
【问题讨论】:
-
请阅读How to Ask。您不应将代码发布为图像,而应以文本的形式发布
-
您找到解决方案了吗?
标签: c# amazon-web-services audio-streaming amazon-lex