diff --git a/packages/google-cloud-speech/samples/snippets/README.rst b/packages/google-cloud-speech/samples/snippets/README.rst index 3dcc17d2d3f4..ba9710e1c365 100644 --- a/packages/google-cloud-speech/samples/snippets/README.rst +++ b/packages/google-cloud-speech/samples/snippets/README.rst @@ -82,6 +82,56 @@ To run this sample: $ python quickstart.py +Transcribe ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + +To run this sample: + +.. code-block:: bash + + $ python transcribe.py + + usage: transcribe.py [-h] speech_file + + Google Cloud Speech API sample application using the REST API for batch + processing. + + Example usage: python translate.py resources/audio.raw + + positional arguments: + speech_file Full path of audio file to be recognized + + optional arguments: + -h, --help show this help message and exit + + +Transcribe async ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + +To run this sample: + +.. code-block:: bash + + $ python transcribe_async.py + + usage: transcribe_async.py [-h] speech_file + + Google Cloud Speech API sample application using the REST API for async + batch processing. + + Example usage: python transcribe_async.py resources/audio.raw + + positional arguments: + speech_file Full path of audio file to be recognized + + optional arguments: + -h, --help show this help message and exit + + The client library diff --git a/packages/google-cloud-speech/samples/snippets/README.rst.in b/packages/google-cloud-speech/samples/snippets/README.rst.in index fbeb326e6eb9..c757d47d5d55 100644 --- a/packages/google-cloud-speech/samples/snippets/README.rst.in +++ b/packages/google-cloud-speech/samples/snippets/README.rst.in @@ -16,5 +16,11 @@ setup: samples: - name: Quickstart file: quickstart.py +- name: Transcribe + file: transcribe.py + show_help: true +- name: Transcribe async + file: transcribe_async.py + show_help: true cloud_client_library: true diff --git a/packages/google-cloud-speech/samples/snippets/resources/audio2.raw b/packages/google-cloud-speech/samples/snippets/resources/audio2.raw new file mode 100644 index 000000000000..35413b788173 Binary files /dev/null and b/packages/google-cloud-speech/samples/snippets/resources/audio2.raw differ diff --git a/packages/google-cloud-speech/samples/snippets/transcribe.py b/packages/google-cloud-speech/samples/snippets/transcribe.py new file mode 100644 index 000000000000..5d7b0717f30f --- /dev/null +++ b/packages/google-cloud-speech/samples/snippets/transcribe.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Cloud Speech API sample application using the REST API for batch +processing. + +Example usage: python translate.py resources/audio.raw +""" + +# [START import_libraries] +import argparse +import io +# [END import_libraries] + + +def main(speech_file): + """Transcribe the given audio file. + + Args: + speech_file: the name of the audio file. + """ + # [START authenticating] + # Application default credentials provided by env variable + # GOOGLE_APPLICATION_CREDENTIALS + from google.cloud import speech + speech_client = speech.Client() + # [END authenticating] + + # [START construct_request] + # Loads the audio into memory + with io.open(speech_file, 'rb') as audio_file: + content = audio_file.read() + audio_sample = speech_client.sample( + content, + source_uri=None, + encoding='LINEAR16', + sample_rate=16000) + # [END construct_request] + + # [START send_request] + alternatives = speech_client.speech_api.sync_recognize(audio_sample) + for alternative in alternatives: + print('Transcript: {}'.format(alternative.transcript)) + # [END send_request] + + +# [START run_application] +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + 'speech_file', help='Full path of audio file to be recognized') + args = parser.parse_args() + main(args.speech_file) + # [END run_application] diff --git a/packages/google-cloud-speech/samples/snippets/transcribe_async.py b/packages/google-cloud-speech/samples/snippets/transcribe_async.py new file mode 100644 index 000000000000..73abae717ac9 --- /dev/null +++ b/packages/google-cloud-speech/samples/snippets/transcribe_async.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Cloud Speech API sample application using the REST API for async +batch processing. + +Example usage: python transcribe_async.py resources/audio.raw +""" + +# [START import_libraries] +import argparse +import io +import time +# [END import_libraries] + + +def main(speech_file): + """Transcribe the given audio file asynchronously. + + Args: + speech_file: the name of the audio file. + """ + # [START authenticating] + # Application default credentials provided by env variable + # GOOGLE_APPLICATION_CREDENTIALS + from google.cloud import speech + speech_client = speech.Client() + # [END authenticating] + + # [START construct_request] + # Loads the audio into memory + with io.open(speech_file, 'rb') as audio_file: + content = audio_file.read() + audio_sample = speech_client.sample( + content, + source_uri=None, + encoding='LINEAR16', + sample_rate=16000) + # [END construct_request] + + # [START send_request] + operation = speech_client.speech_api.async_recognize(audio_sample) + + retry_count = 100 + while retry_count > 0 and not operation.complete: + retry_count -= 1 + time.sleep(2) + operation.poll() + + if not operation.complete: + print("Operation not complete and retry limit reached.") + return + + alternatives = operation.results + for alternative in alternatives: + print('Transcript: {}'.format(alternative.transcript)) + print('Confidence: {}'.format(alternative.confidence)) + # [END send_request] + + +# [START run_application] +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + 'speech_file', help='Full path of audio file to be recognized') + args = parser.parse_args() + main(args.speech_file) + # [END run_application] diff --git a/packages/google-cloud-speech/samples/snippets/transcribe_async_test.py b/packages/google-cloud-speech/samples/snippets/transcribe_async_test.py new file mode 100644 index 000000000000..d90f45608c8b --- /dev/null +++ b/packages/google-cloud-speech/samples/snippets/transcribe_async_test.py @@ -0,0 +1,23 @@ +# Copyright 2016, Google, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import re + +from transcribe_async import main + + +def test_main(resource, capsys): + main(resource('audio.raw')) + out, err = capsys.readouterr() + + assert re.search(r'how old is the Brooklyn Bridge', out, re.DOTALL | re.I) diff --git a/packages/google-cloud-speech/samples/snippets/transcribe_test.py b/packages/google-cloud-speech/samples/snippets/transcribe_test.py new file mode 100644 index 000000000000..c8cb0a703331 --- /dev/null +++ b/packages/google-cloud-speech/samples/snippets/transcribe_test.py @@ -0,0 +1,23 @@ +# Copyright 2016, Google, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import re + +from transcribe import main + + +def test_main(resource, capsys): + main(resource('audio.raw')) + out, err = capsys.readouterr() + + assert re.search(r'how old is the Brooklyn Bridge', out, re.DOTALL | re.I)