讲一下写这篇文章的背景。
因为需求需要,我们APP需要做一个语音转化成文字的功能。因为我们做的是海外产品,需要支持多语言,当前对多语言语音识别支持的最好的解决方案当属谷歌家的了。通过对谷歌的speech-to-text调研和一些其他原因,我们决定通过服务端去接入谷歌的功能,做一个封装,然后把语音识别能力提供给客户端。
谷歌的speech-to-text提供restapi和grpc两种接入方式。我们的应用场景选用的是grpc双向流式的接入方式,我们服务端使用的是go技术栈,所以使用的go接入的grpc。
在接入的过程中也遇到了很多问题,在网上查找资料的时候,发现好像没有相关的文章来解答我们的问题,包括外文社区。我们做了很多尝试和优化,最后才做到了可上线的状态,所以记录一下,顺便分享给大家。
踩了很多坑,总结下来,主要是有以下几方面需要注意:
对音频参数一定要配置正确,这需要客户端配合,比如客户端传过来的音频是什么格式、采样率多少、几个声道,这都很关键。
识别模型的选择,选择适合自己的模型
双向流的控制,控制好流的创建和关闭。1、谷歌的grpc-stream不能连接过长时间,基本不能超过5分钟;2、send接口不能调用的太频繁。
音频数据的缓存方案。我们是接收的客户端的音频实时流数据,需要对数据做临时保存,然后发送给Google,但是谷歌的grpc存在重启的情况,这就需要我们对在重启的时候做到减少数据的丢失。我对数据做了双层保存,第一层是先保存到通道,从通道拿出来,在传给谷歌之前在保存到buffer,buffer到了一定长度才发送给谷歌。这样的好处是即减少了发送的频率,又能减少流重启导致的数据丢失。文章来源:https://www.toymoban.com/news/detail-527101.html
以上主要讲了接入过程中遇到的问题和一些解决方案和心得,具体的代码就不分享了。大家如果在接入过程中还遇到其他问题,可以找我沟通。文章来源地址https://www.toymoban.com/news/detail-527101.html
到了这里,关于接入谷歌的语音识别(speech-to-text)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!