Creo que has encontrado la solución, pero la has puesto en el lugar equivocado.
#audio_file = io.open(stream_file+'.sln16','rb',buffering=0) El proceso que está escribiendo al archivo está probablemente usando un buffer, lo que quiere decir que sólo escribe al disco duro de vez en cuando, cuando haya acumulado una cierta cantidad de datos. Si tienes acceso al programa que escribe el archivo, tienes que o bien desactivar el buffer (¡cuidado con el rendimiento!), usar uno más pequeño, o vaciarlo explícitamente con un flush() más a menudo. On Thu, 4 Jul 2019 at 12:28, Raúl Alexis Betancor Santana < r...@dimension-virtual.com> wrote: > Buenas, estoy intentando hechar a andar el Google Cloud Speech, he intento > leer en stream de un fichero que está siendo escrito por otro proceso, que > contiene la grabación del audio, para enviarla al GCS, pero sin éxito. > > ¿Alguien me puede comentar que estoy haciendo mal?, con el ejemplo que da > GCS para hacer lo mismo con un fichero directamente, que lo que hace es > leerlo completo en memoria y enviarlo, no me da problemas y transcribe bien > el texto. > > Basandome en el código de ejemplo de GCS para streaming > > def read_in_chunks(file_object,chunk_size): > """Lazy function (generator) to read a file piece by piece. > while True: > chunk = file_object.read(chunk_size) > if not chunk: > return > data = [chunk] > yield b''.join(data) > > def transcribe_streaming(stream_file,language,timeout): > """Streams transcription of the given audio file.""" > from google.cloud import speech > from google.cloud.speech import enums > from google.cloud.speech import types > import io > client = speech.SpeechClient() > > #audio_file = io.open(stream_file+'.sln16','rb',buffering=0) > audio_file = io.open(stream_file+'.sln16','rb') > # In practice, stream should be a generator yielding chunks of audio data. > requests = (types.StreamingRecognizeRequest(audio_content=chunk) > for chunk in read_in_chunks(audio_file,3200)) > > config = types.RecognitionConfig( > encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16, > sample_rate_hertz=16000, > language_code=language) > #streaming_config = > types.StreamingRecognitionConfig(config=config,single_utterance=True) > streaming_config = types.StreamingRecognitionConfig(config=config) > > # streaming_recognize returns a generator. > responses = client.streaming_recognize(streaming_config, requests) > for response in responses: > # Once the transcription has settled, the first result will contain the > # is_final result. The other results will be for subsequent portions of > # the audio. > for result in response.results: > if result.is_final: > print('Finished: {}'.format(result.is_final)) > print('Stability: {}'.format(result.stability)) > alternatives = result.alternatives > ### The alternatives are ordered from most likely to least. > for alternative in alternatives: > print('Confidence: {}'.format(alternative.confidence)) > print(u'Transcript: {}'.format(alternative.transcript)) > (null) > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es