模块 'google.cloud.speech_v1.types' 没有 'RecognitionAudio' 成员,模块 'google.cloud.speech_v1.types' 没有 'RecognitionConfig' 成员

Module 'google.cloud.speech_v1.types' has no 'RecognitionAudio' member and Module 'google.cloud.speech_v1.types' has no 'RecognitionConfig' member

我正在使用 Windows 和 Python 3.8.3,并使用来自 Google 云平台的 Cloud Speech-to-Text API,并且每个当我保存我的代码时,它指向一个错误

"Module 'google.cloud.speech_v1.types' has no 'RecognitionAudio' member "

"Module 'google.cloud.speech_v1.types' has no 'RecognitionConfig' member "

我看了文档,唯一提到的是 Python 2.7 之前的版本,这不适用于我,有人知道这个问题的解决方案吗?

import telebot
import requests
from pydub import AudioSegment

import os
import io

from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./chatbotia-279018-759b32f57985.json"

token = "1233361335:AAEO4qSTP6EraU6DvzU"
bot = telebot.TeleBot(token)
downloadAudio = "https://api.telegram.org/file/bot{token}/".format(token = token)

@bot.message_handler(commands=['start'])
def send_welcome(message):
    bot.reply_to(message, "Bem vindo ao bot de escrita, por favor mande um áudio  que lhe será retornado da mesma forma, mas em uma mensagem escrita")
    bot.reply_to(message, "qualquer duvida mande /help.")

@bot.message_handler(commands=['help'])
def send_help(message):
    bot.reply_to(message, " disque 190")

@bot.message_handler(content_types=['voice'])
def handlerAudio(message):

    #get audio from telegram 
    messageVoice = message.voice

    #get download link 
    audioPath = bot.get_file(messageVoice.file_id).file_path
    audioLink = downloadAudio+audioPath

    #download file
    audioFile = requests.get(audioLink)
    audioName = "audio.ogg"

    #save locally
    open(audioName, 'wb').write(audioFile.content)

    #convert format to .WAV
    AudioSegment.from_file(audioName).export("audio.wav", format="wav")
    sound = AudioSegment.from_wav("audio.wav")
    sound = sound.set_channels(1) #convert mono
    sound.export("audio.wav", format="wav")

client = speech.SpeechClient()

with io.open("audio.wav", 'rb') as audio_file:
        content = audio_file.read()

audio = types.RecognitionAudio(content=content)
config = types.RecognitionConfig(
    encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
    sample_rate_hertz=16000,
    language_code='en-US')

response = client.recognize(config, audio)
for result in response.results:
  print(u'Transcript: {}'.format(result.alternatives[0].transcript))

bot.polling()

documentation and Github's README 中,types 是从 google.cloud.speech_v1 而不是 google.cloud.speech 导入的。

你试过了吗?

编辑: 经过进一步分析,这些错误似乎是来自 IDE 的警告。 Google Cloud SDK 的导入机制经常导致 IDE 显示那种警告,但代码仍然有效。