我目前正在研究 Softbanks 的机器人 Pepper,我尝试通过使用 websocket 协议在 Pepper 的音频缓冲区远程流上使用 Watson 语音到文本解决方案。
我使用了前一个问题NAO 机器人远程音频问题的答案来找到一种方法来访问远程胡椒的音频缓冲区和该项目https://github.com/ibm-dev/watson-streaming-stt来学习如何使用 websocket 协议使用 watson 流媒体 stt。
但是,在打开 websocket 应用程序后,我开始向 watson 发送缓冲区,并在几次发送后收到错误:“无法从音频/l16;rate=48000;channel=1 转码到以下之一:audio/x-float -大批; 率=16000;频道=1'
每次我尝试将 Pepper 的音频缓冲区发送给 watson 时,它都无法理解。
我将我发送的数据与 watson 流 stt 示例中发送的数据进行了比较(使用来自麦克风的 pyaudio 流而不是 Pepper 的缓冲区流),我没有看到任何区别。两次我都非常确定我正在发送一个包含原始字节块的字符串。这就是 Watson 在它的文档中所要求的。
我尝试以 48kHz 的采样率发送 8192 字节的块,我可以轻松地将 Pepper 的音频缓冲区转换为六进制,所以我不明白为什么 Watson 无法对其进行转码。
这是我的代码:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import argparse
import base64
import configparser
import json
import threading
import time
from optparse import OptionParser
import naoqi …Run Code Online (Sandbox Code Playgroud)