Python 谷歌云语音导入错误:无法导入名称';枚举';

Python 谷歌云语音导入错误:无法导入名称';枚举';,python,import,google-speech-api,pipenv,google-cloud-speech,Python,Import,Google Speech Api,Pipenv,Google Cloud Speech,我正在为我的项目使用谷歌云语音api。我在虚拟环境中使用pipenv,我用它安装了谷歌云语音api pipenv安装谷歌云语音 及 pipenv更新谷歌云语音 我遵循这个原则 这是我的代码: google.py: # !/usr/bin/env python # coding: utf-8 import argparse import io import sys import codecs import datetime import locale import os from google.

我正在为我的项目使用谷歌云语音api。我在虚拟环境中使用pipenv,我用它安装了谷歌云语音api

pipenv安装谷歌云语音

pipenv更新谷歌云语音

我遵循这个原则

这是我的代码:

google.py:

# !/usr/bin/env python
# coding: utf-8
import argparse
import io
import sys
import codecs
import datetime
import locale
import os

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

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = os.path.join("alt_speech_dev_01-fa5fec6806d9.json")
def get_model_by_language_id(language_id):
    model = ''
    if language_id == 1:
        model = 'ja-JP'
    elif language_id == 2:
        model = 'en-US'
    elif language_id == 3:
        model = "zh-CN"
    else:
        raise ('Not Match Lang')
    return model

def transcribe_gcs_without_speech_contexts(audio_file_path, model):
    client = speech.SpeechClient()
    with io.open(audio_file_path, 'rb') as audio_file:
        content = audio_file.read()
        audio = types.RecognitionAudio(content=content)

    config = {
        "encoding": enums.RecognitionConfig.AudioEncoding.FLAC,
        "sample_rate_hertz": 16000,
        "languageCode": model
        }



    operation = client.long_running_recognize(config, audio)
    print('Waiting for operation to complete...')
    operationResult = operation.result()

    ret=''
    for result in operationResult.results:
      for alternative in result.alternatives:
          ret = alternative.transcript

    return ret

def transcribe_gcs(audio_file_path, model, keywords=None):
    client = speech.SpeechClient()
    with io.open(audio_file_path, 'rb') as audio_file:
        content = audio_file.read()
        audio = types.RecognitionAudio(content=content)

    config = {
        "encoding": enums.RecognitionConfig.AudioEncoding.FLAC,
        "sample_rate_hertz": 16000,
        "languageCode": model,
        "speech_contexts":[{"phrases":keywords}]
        }



    operation = client.long_running_recognize(config, audio)
    print('Waiting for operation to complete...')
    operationResult = operation.result()

    ret=''
    for result in operationResult.results:
      for alternative in result.alternatives:
          ret = alternative.transcript

    return ret

transcribe_gcs_without_speech_contexts('alt_en.wav', get_model_by_language_id(2)) 
当我尝试用

python google.py

它返回错误ImportError:无法使用以下回溯导入名称“SpeechClient”:

Traceback (most recent call last):
  File "google.py", line 11, in <module>
    from google.cloud import speech_v1 as speech
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/google/cloud/speech_v1/__init__.py", line 17, in <module>
    from google.cloud.speech_v1.gapic import speech_client
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/google/cloud/speech_v1/gapic/speech_client.py", line 18, in <module>
    import pkg_resources
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3241, in <module>
    @_call_aside
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3225, in _call_aside
    f(*args, **kwargs)
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3269, in _initialize_master_working_set
    for dist in working_set
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3269, in <genexpr>
    for dist in working_set
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2776, in activate
    declare_namespace(pkg)
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2275, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2208, in _handle_ns
    loader.load_module(packageName)
  File "/home/hoanglinh/Documents/practice_speech/google.py", line 12, in <module>
    from google.cloud.speech import enums
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/google/cloud/speech.py", line 19, in <module>
    from google.cloud.speech_v1 import SpeechClient
ImportError: cannot import name 'SpeechClient'
回溯(最近一次呼叫最后一次):
文件“google.py”,第11行,在
从google.cloud导入语音作为语音
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/google/cloud/speech\u v1/\uuuuuuu init\uuuuuu.py”,第17行
从google.cloud.speech\u v1.gapic导入speech\u客户端
文件“/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site packages/google/cloud/speech_v1/gapic/speech_client.py”,第18行
导入pkg_资源
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuu init\uuuuu.py”,第3241行
@_把你叫到一边
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
f(*args,**kwargs)
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuuuu.py”,第3269行,在主工作集中
用于工作组中的距离
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuu init\uuuu.py”,第3269行,在
用于工作组中的距离
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuu.py”,第2776行,激活
声明_名称空间(pkg)
文件“/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site packages/pkg_resources/_init__.py”,第2275行,位于declare_命名空间中
_句柄(packageName,路径项)
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuuuuu.py”,第2208行,in\u handle\n
loader.load_模块(packageName)
文件“/home/hoanglinh/Documents/practice_speech/google.py”,第12行,在
从google.cloud.speech导入枚举
文件“/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site packages/google/cloud/speech.py”,第19行,在
从google.cloud.speech\u v1导入SpeechClient
ImportError:无法导入名称“SpeechClient”
我做错什么了吗?当我在线搜索错误时,只有一个问题没有答案

更新: 我从

google.cloud将语音导入为语音

对此

从google.cloud导入语音

现在我得到了另一个返回错误,就像这样

Traceback (most recent call last):
  File "google.py", line 11, in <module>
    from google.cloud import speech
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/google/cloud/speech.py", line 19, in <module>
    from google.cloud.speech_v1 import SpeechClient
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/google/cloud/speech_v1/__init__.py", line 17, in <module>
    from google.cloud.speech_v1.gapic import speech_client
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/google/cloud/speech_v1/gapic/speech_client.py", line 18, in <module>
    import pkg_resources
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3241, in <module>
    @_call_aside
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3225, in _call_aside
    f(*args, **kwargs)
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3269, in _initialize_master_working_set
    for dist in working_set
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3269, in <genexpr>
    for dist in working_set
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2776, in activate
    declare_namespace(pkg)
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2275, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2208, in _handle_ns
    loader.load_module(packageName)
  File "/home/hoanglinh/Documents/practice_speech/google.py", line 12, in <module>
    from google.cloud.speech import enums
ImportError: cannot import name 'enums'
回溯(最近一次呼叫最后一次):
文件“google.py”,第11行,在
从google.cloud导入语音
文件“/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site packages/google/cloud/speech.py”,第19行,在
从google.cloud.speech\u v1导入SpeechClient
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/google/cloud/speech\u v1/\uuuuuuu init\uuuuuu.py”,第17行
从google.cloud.speech\u v1.gapic导入speech\u客户端
文件“/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site packages/google/cloud/speech_v1/gapic/speech_client.py”,第18行
导入pkg_资源
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuu init\uuuuu.py”,第3241行
@_把你叫到一边
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
f(*args,**kwargs)
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuuuu.py”,第3269行,在主工作集中
用于工作组中的距离
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuu init\uuuu.py”,第3269行,在
用于工作组中的距离
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuu.py”,第2776行,激活
声明_名称空间(pkg)
文件“/home/hoanglinh/Documents/practice_speech/.venv/lib/python3.6/site packages/pkg_resources/_init__.py”,第2275行,位于declare_命名空间中
_句柄(packageName,路径项)
文件“/home/hoanglinh/Documents/practice\u speech/.venv/lib/python3.6/site packages/pkg\u resources/\uuuuuuuu init\uuuuuuuuuu.py”,第2208行,in\u handle\n
loader.load_模块(packageName)
文件“/home/hoanglinh/Documents/practice_speech/google.py”,第12行,在
从google.cloud.speech导入枚举
ImportError:无法导入名称“enums”
以前有人试过这个图书馆吗?因为仅仅遵循其

  • 第一个解决方案是检查python3.6/site-packages/google/cloud是否有speech_v1。如果没有,您需要先安装它
  • 第二个解决方案尝试检查python3.6/site-packages/google/cloud,如果存在语音文件,则导入的原因是阴影。因为你的别名是“speech” 希望这有帮助
如果您正在使用speech_v1:

from google.cloud import speech_v1 as speech
from google.cloud.speech_v1 import enums
from google.cloud.speech_v1 import types
致辞:

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

将看到以下错误消息

    from google.cloud.speech import enums
ImportError: cannot import name 'enums' 
如果执行了google语音api的“新”安装。请看

同样,如果您已经更新了api,那么使用nanos属性将产生以下消息

AttributeError: 'datetime.timedelta' object has no attribute 'nanos'
请看。使用“微秒”而不是“纳秒”。

如果可以检查的话。 谷歌已将音频编码移动到Google.cloud.speech_v1.types下您可以通过导入类型然后运行以下代码来使用它:

from google.cloud.speech_v1 import types

types.RecognitionConfig.AudioEncoding.LINEAR16

来自谷歌云文档:

枚举和类型 警告
The submodules enums and types have been removed.
from google.cloud import videointelligence

features = [videointelligence.enums.Feature.SPEECH_TRANSCRIPTION]
video_context = videointelligence.types.VideoContext()
After:

from google.cloud import videointelligence

features = [videointelligence.Feature.SPEECH_TRANSCRIPTION]
video_context = videointelligence.VideoContext()