首页 > 解决方案 > 使用 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()

标签: pythongoogle-cloud-platform

解决方案


找出问题所在,设法阅读了 Uberi 的 github 页面上报告的一堆问题。

简单的解决方案是将包更新到 3.8,我运行的是 3.6,它使用的是旧的谷歌云服务。

谢谢达斯汀!


推荐阅读