【技术咨询】上传音频数据后返回500响应
eatjpg 发布于2017-08-16 21:05 浏览:7094 回复:14
1
收藏

应用平台:linux

编程语言:c/c++

问题描述:使用AVS兼容接入 /dcs/avs-compatible-v20160207/directives,上传音频数据,上传结束后,收到了StopCapture,
但是,之后的响应是500,没有任何提示,请问是那里出问题了。

Appid:10006796

收藏
点赞
1
个赞
共14条回复 最后由beckhz回复于2018-02-24 17:54
#2eatjpg回复于2017-08-17

论坛没有技术人员在?

0
#3OZ回复于2017-08-19

你至少还收到了stopcapture,我是一直没反应,或者很快就500响应了。奇怪。

也是nghttp2的库。

0
#4深圳悠响声学回复于2017-08-21

这个问题已经提了好几天了,麻烦官方技术人员尽快回复一下吧。

0
#5大度回复于2017-08-21

StopCapture 收到后, 结束请求的时候,multiPart格式错误,才会报这个错呢,请检查一下客户端发送的数据,MultiPart是否格式不正确。


下次报问题之前,加一下上报的Event的MessageId吧,好追查问题,谢谢

0
#6eatjpg回复于2017-08-21

好的,主要是发给AVS是能正常是别的,响应没有提示,所以比较难定位原因。

我发的请求是这样的:

{
 "event":{
    "header":{
        "namespace":"SpeechRecognizer",
        "name":"Recognize",
        "messageId":"messageId-201",
        "dialogRequestId":"ca600-2c50-45fc-0821205636-0"
    },
    "payload":{
        "profile":"NEAR_FIELD","format":"AUDIO_L16_RATE_16000_CHANNELS_1"
    }
  },
 "context":[
    {"header":{"namespace":"AudioPlayer","name":"PlaybackState"},"payload":{"token":"","offsetInMilliseconds":0,"playerActivity":"IDLE"}},
    {"header":{"namespace":"SpeechSynthesizer","name":"SpeechState"},"payload":{"token":"","offsetInMilliseconds":0,"playerActivity":"FINISHED"}},
    {"header":{"namespace":"Alerts","name":"AlertsState"},"payload":{"allAlerts":[],"activeAlerts":[]}},
    {"header":{"namespace":"Speaker","name":"VolumeState"},"payload":{"volume":30,"muted":false}}
    ]
}


收到的DuerOS的StopCapture:

{
 "directive":{
 "header":{
 "namespace":"SpeechRecognizer",
 "name":"StopCapture",
 "messageId":"e53896c217684a3ebb1dadd083380525",
 "dialogRequestId":"ca600-2c50-45fc-0821205636-0"},
 "payload":{}
 }
}

请看看能不能定位到具体是哪里的格式异常,谢谢!

0
#7eatjpg回复于2017-08-22

官方技术人员呢?

0
#8大度回复于2017-08-23

这个问题的原因是:客户端在收到StopCapture之后,并没有及时的结束语音请求(或者说没有成功发送multipart的end boundary。dueros在发送StopCapture之后,等了5S,request依然没有结束,与是服务器主动结束了本次请求。

0
#9Hanibal007回复于2017-08-23

用charles抓一个包给我们,网络问题看包,辛苦!

0
#10eatjpg回复于2017-08-23

发给AVS的话是可以正常结束的,而且是按照格式 " --boundary-- "发的,  不知道DuerOS的兼容模式有什么不同。另外一个类似问题的帖子,那位提问的工程师说找到了不一致的地方,但是没有具体说明。


看了一下 charles 工具,好像是抓手机端的吧,我们的是arm linux 设备上的,似乎无法做同样的操作,用wireshark抓到的是加密的包

0
#11eatjpg回复于2017-08-25

又测试了一下,目前发送的数据结束跟java客户端是一样的,但是有以下问题:

1)如果没有收到Stopcapture就发结束的话,会没有任何响应。接入AVS的话是正常的,在DuerOS的AVS兼容方式,请问是要发什么数据或者要怎么处理?

2)如果一直上传数据,等收到Stopcapture以后再停止,回的是 “抱歉,我不太确定”,好像识别不正确。这个是什么原因?

麻烦再跟进下,谢谢


0
#12eatjpg回复于2017-08-28

今天用alexa-avs-sample-app 改过的windows程序接入还是恢复 “抱歉,我不知道你在说什么”

有官方技术人员帮忙看看 上面说的两个问题吗。

0
#13大度回复于2017-08-28
#12 eatjpg回复
今天用alexa-avs-sample-app 改过的windows程序接入还是恢复 “抱歉,我不知道你在说什么” 有官方技术人员帮忙看看 上面说的两个问题吗。
展开

听不清,可能是因为windows的麦克风的问题,建议靠近电脑,大声说话,或者使用一个外接麦克风。

0
#14大度回复于2017-08-28

这个统一回复吧

1, 返回500是因为服务端收到的multipart结束符不正确,导致请求异常。

2,听不清的问题,可能是音频信号不好。


目前服务端只支持java版本的alexa-sample-app的Avs兼容方案,c++版本的avs sdk还正在兼容中,后续会持续升级。辛苦大家优化使用java版本的avs sample app,谢谢!


0
#15beckhz回复于2018-02-24

楼主,我也是用nghttp2开发,求交流,qq:370105459

0
TOP