亚马逊Kinesis流上的Google语音转文本:io.grpc.StatusRuntimeException:CANCELLED:操作已取消

时间:2019-05-21 07:36:51

标签: amazon-web-services amazon-lex google-cloud-speech amazon-connect

我想使用Kinesis流将Google语音转文本用作使用Amazon Connect,Amazon Lex和Amazon SQS的语音机器人服务的一部分(我使用了https://cloud.google.com/speech-to-text/docs/streaming-recognize#speech-streaming-mic-recognize-java中的代码,并将引用类型从AudioInputStream更改为InputStream)

我使用Amazon Transcribe语音转文本服务,但由于Google支持更多语言,因此我希望将其替换为Google。但是,Google Speech无法接受Amazon SDK创建的InputStream对象。

我使用下面的代码。除了尝试将AudioInputStream更改为InputStream之外,我还尝试了getAudioInputStream()方法(也可以创建BufferedInputStream)。

String streamName = streamARN.substring(streamARN.indexOf("/") + 1, streamARN.lastIndexOf("/"));
InputStream kvsInputStream = KVSUtils.getInputStreamFromKVS(streamName, REGION, startFragmentNum, getAWSCredentials());
//InputStream bufferedIn = new BufferedInputStream(kvsInputStream); //to solve 'no reset/mark support in stream' error
//AudioInputStream audioStream = AudioSystem.getAudioInputStream(bufferedIn); //to solve 'no reset/mark support in stream' error
streamingMicRecognize(kvsInputStream);

在当前状态下我收到错误消息

com.google.api.gax.rpc.CancelledException: io.grpc.StatusRuntimeException: CANCELLED: The operation was cancelled.

当我使用两条注释行(我在SO上找到此解决方案)时,错误是

java.lang.ClassCastException: com.amazonaws.util.ServiceClientHolderInputStream cannot be cast to javax.sound.sampled.AudioInputStream

您能提出任何解决方案吗?对于英语语音机器人,Connect提供了一个特殊的块,该块使我可以将电话语音与Lex连接,但是Lex仅支持美国英语,我也需要其他语言。我知道Google Dialogflow(“ Google的Lex”)可以处理多种语言并提供与电话网关的集成,但是电话网关仅支持英语(这很荒谬)。 预先感谢。

0 个答案:

没有答案