salomonsky commited on
Commit
d99ff1c
verified
1 Parent(s): 5bcd6a4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -15
app.py CHANGED
@@ -8,12 +8,12 @@ from TTS.api import TTS
8
 
9
  class VoiceAssistant:
10
  def __init__(self):
11
- # Cargar el modelo Wav2Vec2 para reconocimiento de voz en espa帽ol
12
  self.processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53-spanish")
13
  self.model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53-spanish")
14
 
15
- # Cargar el modelo TTS (Text-to-Speech)
16
- self.tts_model = TTS(model_name="tts_models/es/css10/full-dataset", progress_bar=False)
17
 
18
  # Par谩metros de audio
19
  self.sample_rate = 16000
@@ -21,11 +21,11 @@ class VoiceAssistant:
21
  self.p = pyaudio.PyAudio()
22
  self.stream = self.p.open(format=pyaudio.paFloat32, channels=1, rate=self.sample_rate, input=True, frames_per_buffer=self.chunk_size)
23
 
24
- # Palabras clave de activaci贸n y desactivaci贸n
25
  self.keyword_activation = "jarvis"
26
  self.keyword_deactivation = "detente"
27
 
28
- # Estado de la escucha
29
  self.listening = False
30
 
31
  def vad_collector(self, vad_threshold=0.5):
@@ -34,12 +34,12 @@ class VoiceAssistant:
34
  data = self.stream.read(self.chunk_size)
35
  audio_chunk = np.frombuffer(data, dtype=np.float32)
36
 
37
- # Detectar palabra clave de activaci贸n
38
  if self.keyword_activation.lower() in str(audio_chunk).lower():
39
  keyword_detected = True
40
  break
41
 
42
- # Detectar palabra clave de desactivaci贸n
43
  if self.keyword_deactivation.lower() in str(audio_chunk).lower():
44
  self.listening = False
45
  break
@@ -51,12 +51,12 @@ class VoiceAssistant:
51
  def transcribe_audio(self, audio_chunks):
52
  audio_data = np.concatenate(audio_chunks)
53
 
54
- # Preprocesar y transcribir el audio usando Wav2Vec2
55
  input_values = self.processor(audio_data, return_tensors="pt", sampling_rate=self.sample_rate).input_values
56
  with torch.no_grad():
57
  logits = self.model(input_values).logits
58
 
59
- # Obtener el texto transcrito
60
  predicted_ids = torch.argmax(logits, dim=-1)
61
  transcription = self.processor.decode(predicted_ids[0])
62
 
@@ -73,19 +73,17 @@ class VoiceAssistant:
73
  def run(self):
74
  st.title("Asistente de Voz JARVIS")
75
 
 
76
  if st.button("Iniciar/Detener Escucha"):
77
  self.listening = not self.listening
78
- if self.listening:
79
- st.write("Escucha activada. Esperando palabra clave 'JARVIS'...")
80
- else:
81
- st.write("Escucha desactivada.")
82
-
83
  if self.listening:
84
  audio_chunks, keyword_detected = self.vad_collector()
85
 
86
  if keyword_detected:
87
  st.success("Palabra clave 'JARVIS' detectada. Procesando...")
88
-
89
  transcribed_text = self.transcribe_audio(audio_chunks)
90
  st.write(f"Texto transcrito: {transcribed_text}")
91
 
 
8
 
9
  class VoiceAssistant:
10
  def __init__(self):
11
+ # Cargar modelo Wav2Vec2 para reconocimiento de voz en espa帽ol
12
  self.processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53-spanish")
13
  self.model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53-spanish")
14
 
15
+ # Cargar modelo TTS (Text-to-Speech) con modelo alternativo
16
+ self.tts_model = TTS(model_name="tts_models/es/tacotron2-DDC", progress_bar=False)
17
 
18
  # Par谩metros de audio
19
  self.sample_rate = 16000
 
21
  self.p = pyaudio.PyAudio()
22
  self.stream = self.p.open(format=pyaudio.paFloat32, channels=1, rate=self.sample_rate, input=True, frames_per_buffer=self.chunk_size)
23
 
24
+ # Palabras clave
25
  self.keyword_activation = "jarvis"
26
  self.keyword_deactivation = "detente"
27
 
28
+ # Estado de escucha
29
  self.listening = False
30
 
31
  def vad_collector(self, vad_threshold=0.5):
 
34
  data = self.stream.read(self.chunk_size)
35
  audio_chunk = np.frombuffer(data, dtype=np.float32)
36
 
37
+ # Detectar palabra de activaci贸n
38
  if self.keyword_activation.lower() in str(audio_chunk).lower():
39
  keyword_detected = True
40
  break
41
 
42
+ # Detectar palabra de desactivaci贸n
43
  if self.keyword_deactivation.lower() in str(audio_chunk).lower():
44
  self.listening = False
45
  break
 
51
  def transcribe_audio(self, audio_chunks):
52
  audio_data = np.concatenate(audio_chunks)
53
 
54
+ # Procesar y transcribir el audio usando Wav2Vec2
55
  input_values = self.processor(audio_data, return_tensors="pt", sampling_rate=self.sample_rate).input_values
56
  with torch.no_grad():
57
  logits = self.model(input_values).logits
58
 
59
+ # Decodificar la transcripci贸n
60
  predicted_ids = torch.argmax(logits, dim=-1)
61
  transcription = self.processor.decode(predicted_ids[0])
62
 
 
73
  def run(self):
74
  st.title("Asistente de Voz JARVIS")
75
 
76
+ # Bot贸n para iniciar/desactivar la escucha
77
  if st.button("Iniciar/Detener Escucha"):
78
  self.listening = not self.listening
79
+ st.write("Escucha activada." if self.listening else "Escucha desactivada.")
80
+
81
+ # Realizar la transcripci贸n y s铆ntesis de voz si la escucha est谩 activada
 
 
82
  if self.listening:
83
  audio_chunks, keyword_detected = self.vad_collector()
84
 
85
  if keyword_detected:
86
  st.success("Palabra clave 'JARVIS' detectada. Procesando...")
 
87
  transcribed_text = self.transcribe_audio(audio_chunks)
88
  st.write(f"Texto transcrito: {transcribed_text}")
89