Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from pydub import AudioSegment | |
| import tempfile | |
| import os | |
| def processar_audio(trilha, faixa2, volume_trilha, tonalidade_narracao): | |
| trilha = AudioSegment.from_file(trilha.name) | |
| faixa2 = AudioSegment.from_file(faixa2.name) | |
| # Ajustar a tonalidade da narração | |
| faixa2_tonalidade_ajustada = faixa2._spawn(faixa2.raw_data, overrides={ | |
| "frame_rate": int(faixa2.frame_rate * (2 ** (tonalidade_narracao / 12.0))) | |
| }) | |
| # Ajustar o volume da trilha | |
| trilha_com_volume = trilha - volume_trilha | |
| # Obter a duração total das faixas | |
| duracao_total = max(len(trilha_com_volume), len(faixa2_tonalidade_ajustada)) | |
| print(f'Duração total: {duracao_total}') | |
| # Ajustar o tamanho das faixas para a duração total | |
| trilha_com_volume = trilha_com_volume[:duracao_total] | |
| faixa2_tonalidade_ajustada = faixa2_tonalidade_ajustada[:duracao_total] | |
| # Sobrepor as duas faixas | |
| trilha_mesclada = trilha_com_volume.overlay(faixa2_tonalidade_ajustada, position=0) | |
| # Determinar o ponto de corte (após o final da faixa 2) | |
| ponto_de_corte = len(faixa2_tonalidade_ajustada) | |
| print(f'Ponto de corte: {ponto_de_corte}') | |
| # Cortar a trilha após o ponto de corte | |
| trilha_cortada = trilha_mesclada[:ponto_de_corte] | |
| # Criar um arquivo temporário para salvar a trilha cortada | |
| _, temp_path = tempfile.mkstemp(suffix=".mp3") | |
| trilha_cortada.export(temp_path, format="mp3") | |
| return temp_path | |
| # Adicionar o CSS | |
| interface_css = """ | |
| .dark { | |
| --body-background-fill: #232735; | |
| --background-fill-secondary: #232735 | |
| --body-text-color: var(--neutral-100); | |
| --border-color-primary: #576274; | |
| --block-border-color: #576274; | |
| --block-background-fill: #2E3342; | |
| --input-background-fill: #2E3342 | |
| /* ... (adicionar todas as outras variáveis) ... */ | |
| } | |
| body { | |
| background-color: var(--body-background-fill); | |
| color: var(--body-text-color); | |
| } | |
| .left-align-textbox { | |
| text-align: left; | |
| } | |
| /* Pode adicionar estilos específicos para outros elementos conforme necessário */ | |
| """ | |
| iface = gr.Interface( | |
| fn=processar_audio, | |
| inputs=[ | |
| gr.File(label="Trilha"), | |
| gr.Slider(0, 100, 27, label="Volume da Trilha"), | |
| gr.File(label="Faixa de Narração"), | |
| gr.Slider(-12, 12, 0, label="Tonalidade da Narração (em semitons)") | |
| ], | |
| outputs=gr.Audio(label="Resultado"), | |
| css=interface_css | |
| ) |