python - 使用 Uberi 语音转文本代码获取 google api 客户端错误
问题描述
我正在尝试将 Uberi 的语音转文本代码与谷歌云平台 (GCP) 语音转文本 API 一起使用。我收到以下错误:googleapiclient.errors.UnknownApiNameOrVersion: name: speech version: v1beta1
有谁知道如何解决这个错误?似乎在 Uberi github 页面上找不到任何东西。想知道是否有人在使用 GCP 时遇到过类似的错误,或者是否有人有更好的方法来嵌入有效的 google API 语音到文本代码。
GCP 文档不是很清楚!
我正在使用以下代码:
recognizer = sr.Recognizer()
pa = pyaudio.PyAudio()
audio_rate = args.rate
stream_buf = bytes()
stream_counter = 0
def recognize(stream_text):
global args
def logger(s):
f = open('recognition_log2.txt', 'a+', encoding='utf-8')
f.write(datetime.datetime.now().strftime("[ %d-%b-%Y %H:%M:%S ] "))
f.write(s)
f.write("\x0A")
f.close()
audio_data = sr.AudioData(stream_text, audio_rate, 2)
GOOGLE_CLOUD_SPEECH_CREDENTIALS = r"""{
"type": "service_account",
"project_id": "xxx",
"private_key_id": "xxx",
"private_key": "xxx",
"client_email": "xxx",
"client_id": "xxx",
"auth_uri": "xxx",
"token_uri": "xxx",
}
"""
try:
result = recognizer.recognize_google_cloud(audio_data, credentials_json=GOOGLE_CLOUD_SPEECH_CREDENTIALS)
print(result)
logger(result)
except sr.UnknownValueError:
pass
except sr.RequestError as e:
print("Could not request results from GSR service; {0}".format(e))
def stream_audio(data):
global args
global stream_buf
global stream_counter
if stream_counter < args.buf:
stream_buf += data
stream_counter += 1
else:
threading.Thread(target=recognize, args=(stream_buf,)).start()
stream_buf = bytes()
stream_counter = 0
def callback(in_data, frame_count, time_info, status):
stream_audio(in_data)
return (None, pyaudio.paContinue)
stream = pa.open(format=pyaudio.paInt16, channels=1, rate=audio_rate, input=True, stream_callback=callback,
input_device_index=args.device)
stream.start_stream()
while stream.is_active(): time.sleep(0.1)
stream.stop_stream()
stream.close()
pa.terminate()
解决方案
找出问题所在,设法阅读了 Uberi 的 github 页面上报告的一堆问题。
简单的解决方案是将包更新到 3.8,我运行的是 3.6,它使用的是旧的谷歌云服务。
谢谢达斯汀!
推荐阅读
- c - 每次我尝试使用`clang -Weverything`进行编译时,都会收到警告“包含位置'/usr/local/include'对于交叉编译不安全”
- c# - 母版页中的下拉列表未返回由内容页设置的默认值
- docker - chroot 中的 Kubernetes 服务发现
- php - 使用 PHP 从 API 响应中访问值时遇到问题
- r - 有条件地对数据帧的每一行进行计数
- python - Apache Spark / PySpark,为动态键定义自定义 JSON 模式
- flutter - Flutter 中的传入约束是什么意思?
- swift - 滑块移动时删除注释 - 迅速
- r - 如何使用 R 抓取此表中的信息?
- zsh - 引用字符串以在命令行中使用