Arreglado el boton PARAR y repaso de portabilidad
PARAR no pausaba de verdad: el HUD estaba entero para el estado "parado" pero el backend nunca mandaba el campo "parar" en el evento controles, asi que el boton no alternaba ni pausaba la escucha. Ahora pausa (el bucle de escucha descarta el audio en pausa) y alterna a "reanudar". Portabilidad (para que encaje en otros portatiles y torres, no solo en el equipo del autor): - microfono: pw-record / parec / arecord (PipeWire, PulseAudio o ALSA) - whisper: binario del build local o del PATH; modelos por JARVIS_WHISPER_MODELOS o busqueda en varios sitios; CUDA en LD_LIBRARY_PATH solo si existe - README: la tabla de portabilidad refleja audio y whisper
This commit is contained in:
parent
55e967b940
commit
a0b9afe2f9
5 changed files with 102 additions and 23 deletions
|
|
@ -26,6 +26,7 @@ con tres agujeros, y aqui se cierran los tres:
|
|||
"""
|
||||
import collections
|
||||
import os
|
||||
import shutil
|
||||
import signal
|
||||
import struct
|
||||
import subprocess
|
||||
|
|
@ -50,13 +51,31 @@ MAXIMO_S = 25.0
|
|||
|
||||
|
||||
def _grabador(fuente=None):
|
||||
"""La orden para capturar crudo a la salida estandar."""
|
||||
if fuente:
|
||||
pw = ["pw-record", "--target", fuente]
|
||||
else:
|
||||
pw = ["pw-record"]
|
||||
return pw + ["--rate", str(FRECUENCIA), "--channels", str(CANALES),
|
||||
"--format", "s16", "-"]
|
||||
"""La orden para capturar crudo (s16 mono) a la salida estandar.
|
||||
|
||||
Se prueba pw-record (PipeWire), parec (PulseAudio) y arecord (ALSA), en ese
|
||||
orden, la primera que exista en el sistema. Asi el microfono funciona en
|
||||
cualquier Linux —una torre con PulseAudio, un equipo con solo ALSA— y no
|
||||
solo donde hay PipeWire. Los tres sacan el mismo crudo (s16 little-endian,
|
||||
mono, 16 kHz) por la salida estandar, que es lo que lee el detector."""
|
||||
r, c = str(FRECUENCIA), str(CANALES)
|
||||
if shutil.which("pw-record"):
|
||||
cmd = ["pw-record", "--rate", r, "--channels", c, "--format", "s16"]
|
||||
if fuente:
|
||||
cmd += ["--target", fuente]
|
||||
return cmd + ["-"]
|
||||
if shutil.which("parec"):
|
||||
cmd = ["parec", "--rate=" + r, "--channels=" + c, "--format=s16le"]
|
||||
if fuente:
|
||||
cmd += ["-d", fuente]
|
||||
return cmd
|
||||
if shutil.which("arecord"):
|
||||
cmd = ["arecord", "-q", "-r", r, "-c", c, "-f", "S16_LE", "-t", "raw"]
|
||||
if fuente:
|
||||
cmd += ["-D", fuente]
|
||||
return cmd
|
||||
# ninguno instalado: se devuelve pw-record para que el fallo sea claro
|
||||
return ["pw-record", "--rate", r, "--channels", c, "--format", "s16", "-"]
|
||||
|
||||
|
||||
class Captura:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue