File size: 2,431 Bytes
797c88d
 
8bbfd5a
94a8d6e
 
8bbfd5a
797c88d
 
 
8bbfd5a
 
 
 
797c88d
 
94a8d6e
797c88d
417bff0
8bbfd5a
a210a37
417bff0
a210a37
417bff0
 
8bbfd5a
797c88d
 
8bbfd5a
797c88d
94a8d6e
8bbfd5a
797c88d
417bff0
797c88d
 
 
 
8bbfd5a
 
 
a9a6044
8bbfd5a
797c88d
b74cca4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
797c88d
94a8d6e
797c88d
94a8d6e
cefe7c3
e5d8d3f
8bbfd5a
94a8d6e
6153e9b
28e4156
947202f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
)