如何访问Google STT API接收的语音流及Wireshark过滤相关数据包方法
获取Google STT API接收语音流的可行方式
首先明确:Google STT API没有公开可直接访问其服务端接收语音流的接口,你可以通过以下两种方式获取相关音频内容:
- 发送侧本地留存音频副本:你在调用
streamingRecognize接口时,本身是从你的业务服务/客户端向Google接口推送音频流,直接在发送端对推送的音频流做镜像备份即可,这是成本最低、最易实现的方案 - GCP控制台日志导出:如果你需要验证Google侧实际接收的音频内容,可以在GCP控制台的Speech API日志配置中,开启请求有效负载全量日志记录,日志中会存储你发送的音频的base64编码内容,导出后解码即可得到原始音频,注意该操作需要符合你的业务数据合规要求
Wireshark筛选streamingRecognize语音数据包的方法
Google STT的所有交互请求均走TLS加密传输,未配置TLS解密的前提下你只能拿到密文数据包,无法提取语音内容,筛选及解密步骤如下:
- 第一步先筛选STT API的交互流量:你可以先用过滤规则
tls.host == "speech.googleapis.com",过滤出所有和Google STT服务交互的数据包 - 第二步配置TLS解密:启动你部署
streamingRecognize的服务前,先设置SSLKEYLOGFILE环境变量指定密钥日志存储路径,服务运行时会自动将TLS会话密钥写入该文件;之后打开Wireshark的「编辑-首选项-协议-TLS」设置,将「(Pre)-Master-Secret log filename」配置为你刚才指定的密钥日志文件路径,即可自动解密捕获的TLS流量 - 第三步精准筛选语音流请求:解密后使用过滤规则
http2.path == "/google.cloud.speech.v1.Speech/StreamingRecognize",即可定位到所有streamingRecognize的流式请求,语音分片内容存储在HTTP2的DATA帧负载中,导出负载后去掉gRPC协议头即可得到原始音频分片
内容的提问来源于stack exchange,提问作者Vladimir B
相关产品推荐
相关产品推荐

