def build_first_request(sample_rate_hertz, num_channels):
    request = stt_pb2.StreamingRecognizeRequest()
    request.streaming_config.config.encoding = stt_pb2.AudioEncoding.LINEAR16
    request.streaming_config.config.sample_rate_hertz = sample_rate_hertz
    request.streaming_config.config.num_channels = num_channels
    request.streaming_config.config.enable_automatic_punctuation = True
    return request
Exemplo n.º 2
0
def generate_requests(args, agi):
    try:
        yield build_first_streaming_recognition_request(args)
        i = 0
        while True:
            i = i + 1
            if agi != None:
                data = os.read(AUDIO_FD, 8000)
            else:
                data = bytes(160)
            if i == 1:  # drop initial data
                continue
            #if agi != None:
            #    agi.verbose("Frame: %d(%d): %s" % (i, len(data), binascii.hexlify(data)))
            #else:
            #    print("Frame: %d(%d): %s" % (i, len(data), binascii.hexlify(data)))
            if not data:
                break
            request = stt_pb2.StreamingRecognizeRequest()
            request.audio_content = data
            if agi == None and i > 20:
                sys.exit()
            yield request
    except:
        logger.exception("Got exception in generate_requests")
        raise
Exemplo n.º 3
0
def build_first_request(sample_rate_hertz, num_channels):
    request = stt_pb2.StreamingRecognizeRequest()
    request.streaming_config.config.encoding = stt_pb2.AudioEncoding.LINEAR16
    request.streaming_config.config.sample_rate_hertz = sample_rate_hertz
    request.streaming_config.config.num_channels = num_channels
    request.streaming_config.config.profanity_filter = True
    return request
def generate_requests(context):
    try:
        with wave.open("../../audio/stierlitz.wav") as f:
            yield build_first_request(f.getframerate(), f.getnchannels(),
                                      context)
            frame_samples = f.getframerate() // 10  # Send 100ms at a time
            for data in iter(lambda: f.readframes(frame_samples), b''):
                request = stt_pb2.StreamingRecognizeRequest()
                request.audio_content = data
                yield request
            # Sending 1 second of silence
            for i in range(10):
                request = stt_pb2.StreamingRecognizeRequest()
                request.audio_content = bytes(frame_samples)
                yield request
    except Exception as e:
        print("Got exception in generate_requests", e)
        raise
def build_first_request(sample_rate_hertz, num_channels):
    request = stt_pb2.StreamingRecognizeRequest()
    request.streaming_config.config.encoding = stt_pb2.AudioEncoding.LINEAR16
    request.streaming_config.config.sample_rate_hertz = sample_rate_hertz
    request.streaming_config.config.num_channels = num_channels
    request.streaming_config.config.vad_config.min_speech_duration = 1.0
    request.streaming_config.config.vad_config.max_speech_duration = 30.0
    request.streaming_config.config.vad_config.silence_duration_threshold = 3.0
    request.streaming_config.config.vad_config.silence_prob_threshold = 0.2
    return request
def build_first_request(sample_rate_hertz, num_channels, context):
    request = stt_pb2.StreamingRecognizeRequest()
    request.streaming_config.config.encoding = stt_pb2.AudioEncoding.LINEAR16
    request.streaming_config.config.sample_rate_hertz = sample_rate_hertz
    request.streaming_config.config.num_channels = num_channels
    # ВАЖНО!
    # Не рекомендуется:
    # - добавление слов короче 5 символов
    # - выставление score в слишком большое значение
    request.streaming_config.config.speech_contexts.append(context)
    return request
def generate_requests():
    try:
        yield build_first_request()
        with open("../../audio/sample_3.al", "rb") as f:
            for data in iter(lambda: f.read(800), b''):  # Send 100ms at a time
                request = stt_pb2.StreamingRecognizeRequest()
                request.audio_content = data
                yield request
    except Exception as e:
        print("Got exception in generate_requests", e)
        raise
Exemplo n.º 8
0
def generate_requests(path):
    try:
        with wave.open(path) as f:
            yield build_first_request(f.getframerate(), f.getnchannels())
            frame_samples = f.getframerate() // 10  # Send 100ms at a time
            for data in iter(lambda: f.readframes(frame_samples), b''):
                request = stt_pb2.StreamingRecognizeRequest()
                request.audio_content = data
                yield request
    except Exception as e:
        print("Got exception in generate_requests", e)
        raise
Exemplo n.º 9
0
def stt_generate_requests(args, reader):
    try:
        yield build_first_streaming_recognition_request(args)
        while True:
            data = reader.read()
            if not data:
                break
            request = stt_pb2.StreamingRecognizeRequest()
            request.audio_content = data
            yield request
    except:
        logger.exception("Got exception in stt_generate_requests")
        raise
def generate_requests():
    try:
        fname = "../../audio/sample_3.mp3"
        info = MP3(fname).info
        yield build_first_request(info.sample_rate, info.channels)
        with open(fname, "rb") as f:
            for data in iter(lambda: f.read(4096),
                             b''):  # Send 4096 bytes at a time
                request = stt_pb2.StreamingRecognizeRequest()
                request.audio_content = data
                yield request
    except Exception as e:
        print("Got exception in generate_requests", e)
        raise
Exemplo n.º 11
0
 def requests(request):
     try:
         yield request
         pyaudio_lib = pyaudio.PyAudio()
         f = pyaudio_lib.open(input=True,
                              channels=1,
                              format=pyaudio.paInt16,
                              rate=16000)
         for data in iter(lambda: f.read(800), b''):
             request = stt_pb2.StreamingRecognizeRequest()
             request.audio_content = data
             yield request
     except Exception as e:
         print("Got exception in generate_requests", e)
         raise
Exemplo n.º 12
0
def generate_requests():
    try:
        sample_rate_hertz, num_channels = 16000, 1
        pyaudio_lib = pyaudio.PyAudio()
        f = pyaudio_lib.open(input=True,
                             channels=num_channels,
                             format=pyaudio.paInt16,
                             rate=sample_rate_hertz)
        yield build_first_request(sample_rate_hertz, num_channels)
        for data in iter(lambda: f.read(800), b''):  # Send 50ms at a time
            request = stt_pb2.StreamingRecognizeRequest()
            request.audio_content = data
            yield request
    except Exception as e:
        print("Got exception in generate_requests", e)
        raise
Exemplo n.º 13
0
 def __init__(self, recognize):
     self._recognize = recognize
     r = stt_pb2.StreamingRecognizeRequest()
     r.streaming_config.config.encoding = stt_pb2.AudioEncoding.LINEAR16
     r.streaming_config.config.sample_rate_hertz = 16000
     r.streaming_config.config.num_channels = 1
     r.streaming_config.config.enable_denormalization = True
     r.streaming_config.config.enable_automatic_punctuation = True
     r.streaming_config.config.vad_config.silence_duration_threshold = 1.20
     r.streaming_config.single_utterance = True
     r.streaming_config.config.speech_contexts.append(
         stt_pb2.SpeechContext(phrases=[
             stt_pb2.SpeechContextPhrase(text=text, score=10.0)
             for text in self._recognize.context_words
         ]))
     metadata = authorization_metadata(API_KEY, SECRET_KEY,
                                       "tinkoff.cloud.stt")
     stub = stt_pb2_grpc.SpeechToTextStub(
         grpc.secure_channel(ENDPOINT, grpc.ssl_channel_credentials()))
     self._responses = stub.StreamingRecognize(self.requests(r),
                                               metadata=metadata)
def generate_requests():
    try:
        with wave.open("../../audio/sample_3.wav") as f:
            frame_rate_is_valid(f.getframerate())
            yield build_first_request(f.getframerate(), f.getnchannels())
            frame_samples = f.getframerate() // 1000 * 60  # 60ms
            opus_encoder = opuslib.Encoder(f.getframerate(), f.getnchannels(),
                                           opuslib.APPLICATION_AUDIO)
            for data in iter(lambda: f.readframes(frame_samples),
                             b''):  # Send 60ms at a time
                if len(
                        data
                ) < frame_samples * 2:  # Padding last frame to closest allowed frame size
                    data = data.ljust(
                        get_padded_frame_size(frame_samples, f.getframerate())
                        * 2, b'\0')
                request = stt_pb2.StreamingRecognizeRequest()
                request.audio_content = opus_encoder.encode(
                    data,
                    len(data) >> 1)
                yield request
    except Exception as e:
        print("Got exception in generate_requests", e)
        raise
def build_first_request(sample_rate_hertz, num_channels):
    request = stt_pb2.StreamingRecognizeRequest()
    request.streaming_config.config.encoding = stt_pb2.AudioEncoding.MPEG_AUDIO
    request.streaming_config.config.sample_rate_hertz = sample_rate_hertz
    request.streaming_config.config.num_channels = num_channels
    return request
Exemplo n.º 16
0
def build_first_streaming_recognition_request(args):
    request = stt_pb2.StreamingRecognizeRequest()
    set_recognition_config(request.streaming_config.config, args)
    request.streaming_config.interim_results_config.enable_interim_results = args.interim_results
    request.streaming_config.single_utterance = args.single_utterance
    return request
def build_first_request():
    request = stt_pb2.StreamingRecognizeRequest()
    request.streaming_config.config.encoding = stt_pb2.AudioEncoding.LINEAR16
    request.streaming_config.config.sample_rate_hertz = 16000  # Not stored at raw ".s16" file
    request.streaming_config.config.num_channels = 1  # Not stored at raw ".s16" file
    return request