如何保留Websocket调用Bluemix speech2text服务的音频?

时间:2017-09-03 20:39:49

标签: audio ibm-cloud speech-to-text

我们有一个iOS本机应用客户端使用直接交互模式下的Websockets调用Bluemix speech2text服务,这对我们来说非常好(非常快,非常低的延迟)。但我们确实需要保留音频流的副本。大多数音频剪辑很短(<60秒)。有没有一种简单的方法可以做到这一点?

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

或者,我们可以切换到使用HTTP接口并通过代理中继,然后可以为我们保留副本。这里的问题(其他重写一个对我们来说完全正常的应用程序)是由于主调用线程中的额外跳跃,这可能会增加延迟。

任何见解都将不胜感激。

-rg

2 个答案:

答案 0 :(得分:1)

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

http://docs.aws.amazon.com/mobile/sdkforios/developerguide/s3transferutility.html

我们看到的主要优势:

  • 对现有代码没有影响 - 只需添加一个调用即可启动转移
  • 无需实施和维护代理服务器,从而降低了复杂性

Bluemix提供类似于S3的云对象存储,但我们无法找到支持除开箱即用的同步,单线程解决方案之外的任何东西的iOS SDK(我们最初很兴奋看到'Swift'支持,但是事实证明这只是巧合的使用条款。)

答案 1 :(得分:0)

我的两分钱......

我会切换到HTTP界面,如果你让用户更加困难,那么他们就不会使用你的应用程序,并会想出更好的办法。你不应该重写应用程序 - 只是通信,然后有一些服务器端应用程序,将&#34;缓存&#34;那些音频流。

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