feat: adicionadas métricas opcionais de fala ao Scanner com anális
- adicionadas métricas opcionais de fala ao Scanner com análise acústica na engine - corrigido o progresso da transcrição do Scanner durante o processamento do Whisper - refatorado o runner Swift do Apple Vision para executar requests em lote com retry CPU-only, corrigindo falhas de CVPixelBuffer/ANE/OCR - documentado o fluxo de edição de vídeo por voz integrado ao Scanner, banco e engine - formalizado o protocolo de edição por chat com perfil editorial e consultas progressivas Resumo: - 10 arquivos alterados - 5 novos - 5 modificados - 0 removidos 5 files changed, 367 insertions(+), 95 deletions(-) Arquivos: - .jhonny/analises.db - code/engine/executar_scanner.py - code/engine/integracoes/visual/apple_vision_runner.swift - code/engine/integracoes/whisper/provider_de_transcricao_local.py - code/engine/testes/test_provider_de_transcricao_local.py - .jhonny/analises.db-shm - .jhonny/analises.db-wal - apple_vision_runner - code/relatorios/teste-enquadramento-20s.json - docs/
This commit is contained in:
@@ -57,6 +57,42 @@ class TesteDoProviderDeTranscricaoLocal(unittest.TestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
ProviderDeTranscricaoLocal("small", tamanho_do_lote=0)
|
||||
|
||||
def test_emite_progresso_conforme_os_segmentos_processados(self):
|
||||
"""Atualiza o chamador enquanto o gerador do Whisper entrega segmentos."""
|
||||
progresso = []
|
||||
|
||||
class ModeloFalso:
|
||||
"""Representa o modelo externo durante o teste."""
|
||||
|
||||
def __init__(self, *argumentos, **opcoes):
|
||||
pass
|
||||
|
||||
class PipelineFalso:
|
||||
"""Entrega dois segmentos para simular um áudio em processamento."""
|
||||
|
||||
def __init__(self, model):
|
||||
pass
|
||||
|
||||
def transcribe(self, *argumentos, **opcoes):
|
||||
segmentos = [
|
||||
SimpleNamespace(start=0.0, end=2.0, text=" um", words=[]),
|
||||
SimpleNamespace(start=2.0, end=4.0, text=" dois", words=[]),
|
||||
]
|
||||
return iter(segmentos), SimpleNamespace(duration=4.0)
|
||||
|
||||
modulo_falso = types.SimpleNamespace(
|
||||
BatchedInferencePipeline=PipelineFalso,
|
||||
WhisperModel=ModeloFalso,
|
||||
)
|
||||
with tempfile.TemporaryDirectory() as pasta:
|
||||
arquivo = Path(pasta) / "audio.wav"
|
||||
arquivo.write_bytes(b"audio")
|
||||
with patch.dict(sys.modules, {"faster_whisper": modulo_falso}):
|
||||
provider = ProviderDeTranscricaoLocal("small", ao_progresso=progresso.append)
|
||||
provider.transcrever(SimpleNamespace(arquivo=str(arquivo)))
|
||||
|
||||
self.assertEqual(progresso, [50.0, 99.0, 100.0])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user