ConectaPrimoAI commited on
Commit
d4ae795
·
verified ·
1 Parent(s): c6e7069

Upload folder using huggingface_hub

Browse files
__pycache__/armazenamento.cpython-314.pyc CHANGED
Binary files a/__pycache__/armazenamento.cpython-314.pyc and b/__pycache__/armazenamento.cpython-314.pyc differ
 
__pycache__/nucleo.cpython-314.pyc CHANGED
Binary files a/__pycache__/nucleo.cpython-314.pyc and b/__pycache__/nucleo.cpython-314.pyc differ
 
modelos/__pycache__/__init__.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/__init__.cpython-314.pyc and b/modelos/__pycache__/__init__.cpython-314.pyc differ
 
modelos/__pycache__/ace_step.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/ace_step.cpython-314.pyc and b/modelos/__pycache__/ace_step.cpython-314.pyc differ
 
modelos/__pycache__/base.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/base.cpython-314.pyc and b/modelos/__pycache__/base.cpython-314.pyc differ
 
modelos/__pycache__/escolha.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/escolha.cpython-314.pyc and b/modelos/__pycache__/escolha.cpython-314.pyc differ
 
modelos/__pycache__/qwen3_tts.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/qwen3_tts.cpython-314.pyc and b/modelos/__pycache__/qwen3_tts.cpython-314.pyc differ
 
modelos/__pycache__/qwen_image.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/qwen_image.cpython-314.pyc and b/modelos/__pycache__/qwen_image.cpython-314.pyc differ
 
modelos/__pycache__/wan22.cpython-314.pyc CHANGED
Binary files a/modelos/__pycache__/wan22.cpython-314.pyc and b/modelos/__pycache__/wan22.cpython-314.pyc differ
 
nucleo.py CHANGED
@@ -98,8 +98,36 @@ _carregado: Optional[str] = None
98
  # declarados são 120 reservados: cabem até no chamador anônimo. O Wan cabe
99
  # nisso porque o pedido também encolheu (3 s, 20 passos, 480p — ver
100
  # `wan22.gerar`). Quem tiver mais cota sobe `VIDEO_GPU_SECONDS` no Space.
101
- _DURACAO_PADRAO = {"image": 180, "speech": 60, "voice": 60,
102
- "music": 180, "video": 80}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  _VAR_DURACAO = {"image": "IMAGE_GPU_SECONDS", "speech": "TTS_GPU_SECONDS",
104
  "voice": "TTS_GPU_SECONDS", "music": "MUSIC_GPU_SECONDS",
105
  "video": "VIDEO_GPU_SECONDS"}
@@ -236,6 +264,7 @@ def gerar(tipo: str, params_json: str) -> Iterator[Dict]:
236
  saida, mime = modulo.gerar(params, progresso)
237
 
238
  yield {"etapa": "Finalizando…", "progress": 97}
 
239
  resultado = armazenamento.como_url_ou_base64(saida, mime)
240
  resultado["mock"] = mbase.modo_mock()
241
  _log(tipo, "completed")
 
98
  # declarados são 120 reservados: cabem até no chamador anônimo. O Wan cabe
99
  # nisso porque o pedido também encolheu (3 s, 20 passos, 480p — ver
100
  # `wan22.gerar`). Quem tiver mais cota sobe `VIDEO_GPU_SECONDS` no Space.
101
+ def _audio_leve(dado: bytes, mime: str):
102
+ """O WAV grande sai em MP3 (ou AAC). Medido em 14/10/2026: uma música de
103
+ 48 s em WAV são ~9 MB (12 MB em base64), e o resultado nunca chegou ao
104
+ backend — o Space mostrou "Finalizando…" e o evento final não veio. O
105
+ MP3 da mesma música tem ~1 MB. Falhou a conversão, vai o WAV de antes."""
106
+ if mime != "audio/wav" or len(dado) < 1_500_000:
107
+ return dado, mime
108
+ try:
109
+ import subprocess, tempfile
110
+ import imageio_ffmpeg
111
+ exe = imageio_ffmpeg.get_ffmpeg_exe()
112
+ with tempfile.TemporaryDirectory() as d:
113
+ ent = os.path.join(d, "a.wav")
114
+ with open(ent, "wb") as f:
115
+ f.write(dado)
116
+ for args, ext, novo in ((["-c:a", "libmp3lame", "-b:a", "192k"], "mp3", "audio/mpeg"),
117
+ (["-c:a", "aac", "-b:a", "192k"], "m4a", "audio/mp4")):
118
+ sai = os.path.join(d, "a." + ext)
119
+ r = subprocess.run([exe, "-y", "-loglevel", "error", "-i", ent, *args, sai],
120
+ capture_output=True, timeout=60)
121
+ if r.returncode == 0 and os.path.exists(sai) and os.path.getsize(sai) > 1000:
122
+ with open(sai, "rb") as f:
123
+ return f.read(), novo
124
+ except Exception as e:
125
+ logger.warning("áudio leve: %s", str(e)[:160])
126
+ return dado, mime
127
+
128
+
129
+ _DURACAO_PADRAO = {"image": 80, "speech": 60, "voice": 60,
130
+ "music": 80, "video": 80} # 80 x 1,5 = 120 s: o teto medido do plano gratuito (14/10/2026)
131
  _VAR_DURACAO = {"image": "IMAGE_GPU_SECONDS", "speech": "TTS_GPU_SECONDS",
132
  "voice": "TTS_GPU_SECONDS", "music": "MUSIC_GPU_SECONDS",
133
  "video": "VIDEO_GPU_SECONDS"}
 
264
  saida, mime = modulo.gerar(params, progresso)
265
 
266
  yield {"etapa": "Finalizando…", "progress": 97}
267
+ saida, mime = _audio_leve(saida, mime)
268
  resultado = armazenamento.como_url_ou_base64(saida, mime)
269
  resultado["mock"] = mbase.modo_mock()
270
  _log(tipo, "completed")