Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Entrada conversacional en Pyaudio (cómo hacer entradas de tiempo desigual)
#1
Estoy realizando un programa conversacional, que ya tengo bastante avanzado, de modo que actualmente acepta una entrada por teclado, en lenguaje natural, y el "robot" contesta tanto en pantalla como por los altavoces, es decir, "lee" la entrada del usuario y le contesta "hablando".

El siguiente paso es ir a un sistema por el que el usuario pueda dar su entrada de viva voz, no por teclado, y el "robot" le conteste; para ello, debo hacer que por micrófono se acepte una entrada, y se convierta a texto. Esto lo tengo ya resuelto mediante esta pequeña rutina
import pyaudio
import wave
import speech_recognition as sr
 
FORMAT=pyaudio.paInt16
CHANNELS=2
RATE=44100
CHUNK=1024
duracion=5
archivo="grabacion.wav"
audio=pyaudio.PyAudio()
stream=audio.open(format=FORMAT,channels=CHANNELS,rate=RATE,
                  input=True,frames_per_buffer=CHUNK)
print("grabando...")
frames=[]
for i in range(0,int(RATE/CHUNK*duracion)):
    data=stream.read(CHUNK)
    frames.append(data)
print("grabación terminada")
stream.stop_stream()
stream.close()
audio.terminate()
waveFile=wave.open(archivo,"wb")
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
 
re = sr.Recognizer()
 
with sr.Microphone() as source:
    audio="grabacion.wav"
 
with sr.AudioFile(audio) as source:
    info_audio=re.record(source)
    texto=re.recognize_google(info_audio,language='es')
    print(texto)
print("fin")


Funciona perfectamente, pero se basa en grabar X segundos y transcribirlos (en este caso 5 segundos, aunque puedo poner los que quiera). Transcurrido este tiempo, el sistema hace la transcripción a texto, y como digo, funciona. Ahora bien, ¿no sería posible hacer que la entrada no tuviera un tiempo marcado, sino que esperase hasta que hubiera un silencio, y entonces se generara el fichero wav que se transcribe?

Agradecería cualquier ayuda.
Responder


Salto de foro:


Usuarios navegando en este tema: 3 invitado(s)