Viewing File: /home/ubuntu/codegamaai-test/tts_openvoice/main_voice_style.py
import os
import torch
from OpenVoice.openvoice import se_extractor
from OpenVoice.openvoice.api import ToneColorConverter
import time
import uuid
speed = 1.0
device = "cuda:0" if torch.cuda.is_available() else "cpu"
ckpt_converter = os.path.join(os.environ['CHECKPOINT_DIR'], 'converter')
device = "cuda:0" if torch.cuda.is_available() else "cpu"
speaker_key = 'en-newest'
tone_color_converter = ToneColorConverter(os.path.join(ckpt_converter, 'config.json'), device=device)
tone_color_converter.load_ckpt(os.path.join(ckpt_converter, 'checkpoint.pth'))
reference_speaker = os.path.join(os.environ['RESOURCE_DIR'], 'example_reference.mp3')
target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, vad=False)
# source_se = torch.load(f'checkpoints_v2/base_speakers/ses/{speaker_key}.pth', map_location=device)
source_se = torch.load(os.path.join(os.environ['CHECKPOINT_DIR'], 'base_speakers', 'ses', f'{speaker_key}.pth'), map_location=device)
def base_voice_style(input_audio_path, user_id, vid):
output_dir = os.path.join(os.environ['DATASET_STORE'], str(user_id), str(vid), 'processed_audio')
output_file_name = f'{user_id}_{vid}_{str(uuid.uuid4())}.wav'
output_file_path = os.path.join(output_dir, output_file_name)
output_file_url = os.path.join(os.environ['OUTPUT_MEDIA_URL'], 'data', str(user_id), str(vid), 'processed_audio', output_file_name)
os.makedirs(output_dir, exist_ok=True)
src_path = input_audio_path
# Run the tone color converter
encode_message = "@MyShell"
tone_color_converter.convert(
audio_src_path=src_path,
src_se=source_se,
tgt_se=source_se,
output_path=output_file_path,
message=encode_message)
return {"status": 1, "message": "Audio file generated successfully", "output_file": output_file_path, "output_file_url": output_file_url}
def voice_style(reference_speaker_path, speaker_key, input_audio_path, user_id, vid):
ckpt_converter = os.path.join(os.environ['CHECKPOINT_DIR'], 'converter')
output_dir = os.path.join(os.environ['DATASET_STORE'], str(user_id), str(vid), 'processed_audio')
output_file_name = f'{user_id}_{vid}_{str(uuid.uuid4())}.wav'
output_file_path = os.path.join(output_dir, output_file_name)
output_file_url = os.path.join(os.environ['OUTPUT_MEDIA_URL'], 'data', str(user_id), str(vid), 'processed_audio', output_file_name)
os.makedirs(output_dir, exist_ok=True)
src_path = input_audio_path
speaker_key = 'en-newest'
tone_color_converter = ToneColorConverter(os.path.join(ckpt_converter, 'config.json'), device=device)
tone_color_converter.load_ckpt(os.path.join(ckpt_converter, 'checkpoint.pth'))
if reference_speaker_path is None:
reference_speaker_path = os.path.join(os.environ['RESOURCES_DIR'], 'example_reference.mp3')
elif not os.path.exists(reference_speaker_path):
return {"status": 0, "message": "Reference speaker file does not exist", "output_file": None}
target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, vad=False)
source_se = torch.load(f'checkpoints_v2/base_speakers/ses/{speaker_key}.pth', map_location=device)
source_se = torch.load(os.path.join(os.environ['CHECKPOINT_DIR'], 'base_speakers', 'ses', f'{speaker_key}.pth'), map_location=device)
# Run the tone color converter
encode_message = "@MyShell"
tone_color_converter.convert(
audio_src_path=src_path,
src_se=source_se,
tgt_se=target_se,
output_path=output_file_path,
message=encode_message)
return {"status": 1, "message": "Audio file generated successfully", "output_file": output_file_path, "output_file_url": output_file_url}
Back to Directory
File Manager