模块 '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 显示那种警告,但代码仍然有效。
我正在使用 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 显示那种警告,但代码仍然有效。