Audio 如何从Websocket调用Bluemix speech2text服务中保留音频?

Audio 如何从Websocket调用Bluemix speech2text服务中保留音频?,audio,ibm-cloud,speech-to-text,Audio,Ibm Cloud,Speech To Text,我们有一个iOS原生应用程序客户端,在直接交互模式下使用WebSocket调用Bluemix speech2text服务,这对我们来说非常有用(非常快,非常低的延迟)。但我们确实需要保留音频流的副本。大多数音频剪辑都很短(

我们有一个iOS原生应用程序客户端,在直接交互模式下使用WebSocket调用Bluemix speech2text服务,这对我们来说非常有用(非常快,非常低的延迟)。但我们确实需要保留音频流的副本。大多数音频剪辑都很短(<60秒)。有没有一个简单的方法

我们当然可以让客户端缓冲音频剪辑,并在方便的时候上传到某个地方。这可能会增加内存占用,特别是对于较长的剪辑。如果不小心,会影响应用程序性能

或者,我们可以切换到使用HTTP接口并通过代理进行中继,然后代理可以为我们保留一份副本。这里的问题(除了重新编写一个对我们来说非常好的应用程序)是,由于主调用线程中的额外跳数,这可能会增加延迟

如有任何见解,将不胜感激

-rg

我的两分钱

我会切换到HTTP接口,如果你让你的用户变得更难,那么他们就不会使用你的应用程序,会想出更好的方法来做事情。你不应该重写应用程序——只需要通信,然后使用某种服务器端应用程序“缓存”这些音频流


另一种方法是让应用程序保持原样,只需添加一个步骤,在将音频文件发送到语音到文本后,在另一个线程中将其发送到某个存储库。在这种情况下,您不仅可以保存音频文件,还可以保存文本翻译。

经过一些额外的研究,我们决定使用Amazon S3 TransferUtility Mobile SDK for iOS。它将数据分块和多线程封装在单个对象中,甚至在iOS暂停应用程序后在后台完成传输

我们看到的主要优势是:

  • 对现有代码没有影响——只需添加一个调用来启动传输
  • 无需实现和维护代理服务器,从而降低了复杂性

Bluemix提供了类似于S3的云对象存储,但我们无法找到一个iOS SDK,它支持除同步、单线程解决方案之外的任何东西(我们最初很期待看到“Swift”支持,但事实证明这只是巧合).

使用代理并在SDK中指定代理URL。您只需确保代理使用Java等多线程语言,因为您将要执行大量I/OI操作。请参见两个主要选项:1)使用websocket代理并在将音频推送到Watson STT之前捕获音频。2) 使用分块传输编码进行POST,以将音频作为流发布到存储解决方案中,这样您就不会遇到内存问题。这将在后台线程中完成,而且应该非常便宜。我私下希望有一种方法可以从Watson STT获得最后一个音频剪辑,唉,听起来不像。除此之外,这两种代理建议听起来都是合法的——我们将试一试。谢谢。