Page 1132 - 3-2
P. 1132

def record_audio(rate, chunk):
                """Opens a recording stream in a context manager."""
                # Create a thread-safe buffer of audio data
                buff = queue.Queue()


                audio_interface = pyaudio.PyAudio()
                audio_stream = audio_interface.open(
                    format=pyaudio.paInt16,
                    # The API currently only supports 1-channel (mono) audio
                    # https://goo.gl/z757pE
                    channels=1, rate=rate,
                    input=True, frames_per_buffer=chunk,
                    # Run the audio stream asynchronously to fill the buffer object.
                    # This is necessary so that the input device's buffer doesn't overflow
                    # while the calling thread makes network requests, etc.
                    stream_callback=functools.partial(_fill_buffer, buff),
                )


                yield _audio_data_generator(buff)


                audio_stream.stop_stream()
                audio_stream.close()
                # Signal the _audio_data_generator to finish
                buff.put(None)
                audio_interface.terminate()
            # [END audio_stream]




            def request_stream(data_stream, rate, interim_results=True):
                """Yields `StreamingRecognizeRequest`s constructed from a recording audio
                stream.
                Args:
                    data_stream: A generator that yields raw audio data to send.
                    rate: The sampling rate in hertz.
                    interim_results: Whether to return intermediate results, before the
                        transcription is finalized.
                """
                # The initial request must contain metadata about the stream, so the
                # server knows how to interpret it.
                recognition_config = cloud_speech_pb2.RecognitionConfig(
                    # There are a bunch of config options you can specify. See
                    # https://goo.gl/KPZn97 for the full list.
                    encoding='LINEAR16', # raw 16-bit signed LE samples
                    sample_rate=rate, # the rate in hertz
                    # See http://g.co/cloud/speech/docs/languages


                                                        - 1132 -
   1127   1128   1129   1130   1131   1132   1133   1134   1135   1136   1137