简体   繁体   English

如何在 Google App Engine (python) 中导入 Google Cloud 语音识别

[英]How to import google cloud speech recognition in Google App Engine (python)

I want to use google.cloud library on my Google App Engine python application.我想在我的 Google App Engine python 应用程序上使用 google.cloud 库。 In my local all my tests work since I installed this library on my local.自从我在本地安装了这个库以来,我所有的测试都在我的本地工作。 I was expecting it to be supported in GAE by default but it's not supported .我原以为 GAE 默认支持它,但它不受支持

This the error I got:这是我得到的错误:

from google.cloud import speech
ImportError: No module named cloud

I had a look at adding 3rd party libraries at https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27我查看了在https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27添加 3rd 方库

After following the instructions I got another error.按照说明操作后,我又遇到了另一个错误。

(/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py:263)
Traceback (most recent call last):
  File "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/main.py", line 18, in <module>
    from google.cloud import speech
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/lib/google/cloud/speech/__init__.py", line 22, in <module>
    from google.cloud.speech.client import Client
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/lib/google/cloud/speech/client.py", line 25, in <module>
    from google.cloud.speech._gax import GAPICSpeechAPI
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/lib/google/cloud/speech/_gax.py", line 17, in <module>
    from google.cloud.gapic.speech.v1.speech_client import SpeechClient
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/lib/google/cloud/gapic/speech/v1/speech_client.py", line 31, in <module>
    from google.gapic.longrunning import operations_client
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/lib/google/gapic/longrunning/operations_client.py", line 45, in <module>
    from google.gax import api_callable
  File "/base/data/home/apps/s~goooogle-translate/20180126t023051.407206565499030997/lib/google/gax/__init__.py", line 36, in <module>
    import multiprocessing as mp
  File "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_dist/lib/python2.7/multiprocessing/__init__.py", line 65, in <module>
    from multiprocessing.util import SUBDEBUG, SUBWARNING
  File "/base/alloc/tmpfs/dynamic_runtimes/python27/54c5883f70296ec8_unzipped/python27_dist/lib/python2.7/multiprocessing/util.py", line 41, in <module>
    from subprocess import _args_from_interpreter_flags
ImportError: cannot import name _args_from_interpreter_flags

I hardly understand this one.我很难理解这一点。 If you have done this before please let me know how to setup google.cloud inside GAE.如果您以前这样做过,请告诉我如何在 GAE 中设置 google.cloud。

As already answered in this other Stack Overflow post about using Client Libraries in App Engine Standard , GAE Standard does not support Google Client Libraries, so you can either go with App Engine Flexible , a Compute Engine instance or work with the REST API (which also has a Python library that works in App Engine Standard).正如在另一篇关于在 App Engine Standard 中使用客户端库的Stack Overflow 帖子中已经回答的那样,GAE Standard 不支持 Google 客户端库,因此您可以使用App Engine Flexible ,一个Compute Engine 实例或使用REST API (这也有一个适用于 App Engine 标准的 Python 库)。

If you specifically need to use the google.cloud library, you will have to use App Engine Flexible and not Standard, but in case you would rather work with the Standard environment, below I share the code for a sample App Engine Standard application using Cloud Speech API through the Google API Python Client Library .如果您特别需要使用google.cloud库,则必须使用 App Engine Flexible 而不是 Standard,但如果您更愿意使用 Standard 环境,下面我将分享使用 Cloud 的示例 App Engine Standard 应用程序的代码语音 API 通过Google API Python 客户端库 This library is not built-in for GAE Standard, so you will have to vendor it as if it was a third-party library .该库不是 GAE 标准的内置库,因此您必须将其作为第三方库进行供应 To do so, you will have to create the lib folder in your local application's directory, and the requirements.txt file I share below, and then install this library with the command pip install -t lib/ -r requirements.txt .为此,您必须在本地应用程序的目录中创建lib文件夹,以及我在下面共享的requirements.txt文件,然后使用命令pip install -t lib/ -r requirements.txt安装此库。

Files needed to run this sample GAE Application:运行此示例 GAE 应用程序所需的文件:

requirements.txt要求.txt

google-api-python-client

appengine_config.py appengine_config.py

from google.appengine.ext import vendor

# Add any libraries install in the "lib" folder.
vendor.add('lib')

app.yaml应用程序.yaml

runtime: python27
api_version: 1
threadsafe: True

handlers:
- url: /.*
  script: main.app

main.py主文件

import webapp2
from apiclient.discovery import build
from oauth2client.client import GoogleCredentials

class MainPage(webapp2.RequestHandler):
    # Presentation page
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('This is a sample App Engine Standard application working with Cloud Speech API! :)\n\nGo to /speechAPI to transcribe your audio file (you will need to upload it to one of your Cloud Storage buckets)!')

class Recognize(webapp2.RequestHandler):
    # Working with Python API Client Library (NOT NEW CLIENT LIBRARIES)
    def get(self):
        # Add credentials
        credentials = GoogleCredentials.get_application_default()
        service = build('speech', 'v1', credentials=credentials)

        # Methods available in: https://developers.google.com/resources/api-libraries/documentation/speech/v1/python/latest/index.html
        collection = service.speech()

        # Build the data structure JSON-like
        data = {}
        data['audio'] = {}
        data['audio']['uri'] = 'gs://<BUCKET>/<FOLDER>/<FILE>'
        data['config'] = {}
        data['config']['encoding'] = '<ENCODING>'
        data['config']['languageCode'] = '<LANGUAGE_CODE>'
        data['config']['sampleRateHertz'] = <SAMPLE_RATE>

        # Build the request and execute it
        request = collection.recognize(body=data)
        res = request.execute()

        # Webapp2 Response
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write(res)


app = webapp2.WSGIApplication([
    ('/', MainPage),
    ('/speechAPI', Recognize),
], debug=True)

This application also works in the Local Development Server, so you can test it with the command dev_appserver.py app.yaml before deploying it to App Engine.此应用程序也可在本地开发服务器中运行,因此您可以在将其部署到 App Engine 之前使用命令dev_appserver.py app.yaml对其进行测试。

Try this: sudo pip install --upgrade google-cloud-speech试试这个: sudo pip install --upgrade google-cloud-speech

Or:或者:

I'm using another library,我正在使用另一个图书馆,
Does this method help you up?这个方法对你有帮助吗?

import speech_recognition as sp
import time

print("Say something!")

while True:
    rec = sp.Recognizer()
    with sp.Microphone() as mic:
        audio = rec.listen(mic)
    try:
        print(rec.recognize_google(audio))
    except sp.UnknownValueError:
        print("I cannot understand what you said")
        time.sleep(0.5)
        print("Say again")
    except sp.RequestError as e:
        print("Error".format(e))
    word = rec.recognize_google(audio)

    if word == 'goodbye':
        break

Installation:安装:

sudo pip install SpeechRecognition

sudo pip install pyaudio

If you found an error:如果发现错误:

sudo apt-get install python-pyaudio

sudo apt-get install libjack-jackd2-dev portaudio19-dev

Then again:然后再说一遍:

sudo pip install pyaudio

If you found error try this:如果您发现错误,请尝试以下操作:

sudo pip install --upgrade pyaudio

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM