| import streamlit as st | |
| from utils.ai_functions import clone_voice | |
| from utils.data_processing import process_audio_samples, extract_personality_traits | |
| def show_voice_cloning(): | |
| st.title("Voice Cloning") | |
| st.write("Upload voice samples and define personality traits to recreate lifelike voices.") | |
| samples = st.file_uploader("Upload voice samples (WAV files)", accept_multiple_files=True, type=['wav']) | |
| traits = st.text_area("Enter personality traits (comma-separated)") | |
| if st.button("Clone Voice"): | |
| if samples and traits: | |
| with st.spinner("Processing voice samples..."): | |
| processed_samples = process_audio_samples(samples) | |
| with st.spinner("Extracting personality traits..."): | |
| processed_traits = extract_personality_traits(traits) | |
| with st.spinner("Cloning voice..."): | |
| result = clone_voice(processed_samples, processed_traits) | |
| st.success("Voice cloning complete!") | |
| st.audio(result, format='audio/wav') | |
| else: | |
| st.warning("Please upload samples and enter traits.") |