Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -132,7 +132,24 @@ async def load_model_data():
|
|
| 132 |
sess_options = onnxruntime.SessionOptions()
|
| 133 |
|
| 134 |
# Collect data for all models in the directory and populate model_configurations
|
| 135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
|
| 137 |
|
| 138 |
#@app.post("/synthesize")
|
|
@@ -149,27 +166,7 @@ async def main(
|
|
| 149 |
noise_scale_w_slider: float = Form(...),
|
| 150 |
play: bool = Form(True)
|
| 151 |
):
|
| 152 |
-
|
| 153 |
-
# sys.path.append('./content/piper/src/python')
|
| 154 |
-
# models_path = "./content/piper/src/python"
|
| 155 |
-
# logging.basicConfig(level=logging.DEBUG)
|
| 156 |
-
# providers = [
|
| 157 |
-
# "CPUExecutionProvider"
|
| 158 |
-
# if use_gpu is False
|
| 159 |
-
# else ("CUDAExecutionProvider", {"cudnn_conv_algo_search": "DEFAULT"})
|
| 160 |
-
# ]
|
| 161 |
-
# sess_options = onnxruntime.SessionOptions()
|
| 162 |
-
# model = None
|
| 163 |
-
# lang = speaker
|
| 164 |
-
# onnx_models = detect_onnx_models(models_path)
|
| 165 |
-
|
| 166 |
-
# if len(text_input) == 0:
|
| 167 |
-
# text_input = "1, 2, 3. This is a test. Enter some text to generate."
|
| 168 |
-
# speaker_selection = widgets.Dropdown(
|
| 169 |
-
# options=[],
|
| 170 |
-
# description=f'{lan.translate(lang, "Select speaker")}:',
|
| 171 |
-
# layout={'visibility': 'hidden'}
|
| 172 |
-
# )
|
| 173 |
# Handle loading the selected model and speaker ID here
|
| 174 |
if selected_model in onnx_models:
|
| 175 |
config = model_configurations[selected_model]
|
|
@@ -184,43 +181,28 @@ async def main(
|
|
| 184 |
document.getElementById("synthesize_button").disabled = true;
|
| 185 |
</script>
|
| 186 |
"""
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
config
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
# rate = speed_slider.value
|
| 205 |
-
# noise_scale = noise_scale_slider.value
|
| 206 |
-
# noise_scale_w = noise_scale_w_slider.value
|
| 207 |
auto_play = play
|
| 208 |
audio = inferencing(model, config, 1, text_input, speed_slider, noise_scale_slider, noise_scale_w_slider, auto_play)
|
| 209 |
temp_dir = tempfile.mkdtemp()
|
| 210 |
|
| 211 |
-
# Create a temporary directory to store the audio files
|
| 212 |
-
#temp_dir = tempfile.mkdtemp()
|
| 213 |
-
|
| 214 |
-
# Export the audio to an MP3 file in the temporary directory
|
| 215 |
-
# temp_audio_file = os.path.join(temp_dir, "generated_audio.mp3")
|
| 216 |
-
|
| 217 |
-
# Check if text_input is more than 200 characters
|
| 218 |
-
# if len(text_input) > 100:
|
| 219 |
-
# Truncate text_input to 200 characters
|
| 220 |
-
# text_input = text_input[:100]
|
| 221 |
|
| 222 |
-
# Rename the audio file based on the text input
|
| 223 |
-
# renamed_audio_file = os.path.join(temp_dir, f"{text_input}.mp3")
|
| 224 |
renamed_audio_file = os.path.join(temp_dir, "download.mp3")
|
| 225 |
|
| 226 |
audio.export(renamed_audio_file, format="mp3")
|
|
@@ -242,60 +224,6 @@ async def main(
|
|
| 242 |
document.getElementById("synthesize_button").disabled = false;
|
| 243 |
</script>
|
| 244 |
"""
|
| 245 |
-
# os.rename(temp_audio_file, renamed_audio_file)
|
| 246 |
-
|
| 247 |
-
# Specify the path to your MP3 audio file
|
| 248 |
-
# audio_file_path = "path/to/your/audio.mp3"
|
| 249 |
-
|
| 250 |
-
# Check if the file exists
|
| 251 |
-
# if not os.path.exists(audio_file_path):
|
| 252 |
-
# return {"detail": "Audio file not found"}
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
# temp_audio_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
|
| 256 |
-
# audio.export(temp_audio_file.name, format="mp3")
|
| 257 |
-
|
| 258 |
-
# Rename the temporary audio file based on the text input
|
| 259 |
-
# global renamed_audio_file
|
| 260 |
-
# renamed_audio_file = os.path.join(tempfile.gettempdir(), f"{text_input}.mp3")
|
| 261 |
-
# os.rename(temp_audio_file.name, renamed_audio_file)
|
| 262 |
-
|
| 263 |
-
else:
|
| 264 |
-
voice_model_names = []
|
| 265 |
-
for current in onnx_models:
|
| 266 |
-
voice_struct = current.split("/")[5]
|
| 267 |
-
voice_model_names.append(voice_struct)
|
| 268 |
-
# if enhanced_accessibility:
|
| 269 |
-
# playaudio("selectmodel")
|
| 270 |
-
# selection = widgets.Dropdown(
|
| 271 |
-
# options=voice_model_names,
|
| 272 |
-
# description=f'{lan.translate(lang, "Select voice package")}:',
|
| 273 |
-
# )
|
| 274 |
-
# load_btn = widgets.Button(
|
| 275 |
-
# description=lan.translate(lang, "Load it!")
|
| 276 |
-
# )
|
| 277 |
-
# config = None
|
| 278 |
-
# def load_model(button):
|
| 279 |
-
# nonlocal config
|
| 280 |
-
# global onnx_model
|
| 281 |
-
# nonlocal model
|
| 282 |
-
# nonlocal models_path
|
| 283 |
-
# selected_voice = selection.value
|
| 284 |
-
# onnx_model = f"{models_path}/{selected_voice}"
|
| 285 |
-
# model, config = load_onnx(onnx_model, sess_options, providers)
|
| 286 |
-
# if enhanced_accessibility:
|
| 287 |
-
# playaudio("loaded")
|
| 288 |
-
# if config["num_speakers"] > 1:
|
| 289 |
-
# speaker_selection.options = config["speaker_id_map"].values()
|
| 290 |
-
# speaker_selection.layout.visibility = 'visible'
|
| 291 |
-
# if enhanced_accessibility:
|
| 292 |
-
# playaudio("multispeaker")
|
| 293 |
-
# else:
|
| 294 |
-
# speaker_selection.layout.visibility = 'hidden'
|
| 295 |
-
|
| 296 |
-
# load_btn.on_click(load_model)
|
| 297 |
-
# display(selection, load_btn)
|
| 298 |
-
# display(speaker_selection)
|
| 299 |
|
| 300 |
|
| 301 |
|
|
|
|
| 132 |
sess_options = onnxruntime.SessionOptions()
|
| 133 |
|
| 134 |
# Collect data for all models in the directory and populate model_configurations
|
| 135 |
+
model_names = detect_onnx_models(models_path)
|
| 136 |
+
for model_name in model_names:
|
| 137 |
+
# Load the configuration data for each model (including speaker_id_map)
|
| 138 |
+
config = load_model_configuration(model_name)
|
| 139 |
+
model_configurations[model_name] = config
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
def load_model_configuration(model_name):
|
| 143 |
+
# Assuming model_name is the path to the ONNX model file, e.g., 'model.onnx'
|
| 144 |
+
config_file_path = model_name.replace('.onnx', '.json')
|
| 145 |
+
|
| 146 |
+
try:
|
| 147 |
+
with open(config_file_path, 'r') as config_file:
|
| 148 |
+
config_data = json.load(config_file)
|
| 149 |
+
return config_data
|
| 150 |
+
except FileNotFoundError:
|
| 151 |
+
# Handle the case where the configuration file does not exist
|
| 152 |
+
return None
|
| 153 |
|
| 154 |
|
| 155 |
#@app.post("/synthesize")
|
|
|
|
| 166 |
noise_scale_w_slider: float = Form(...),
|
| 167 |
play: bool = Form(True)
|
| 168 |
):
|
| 169 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
# Handle loading the selected model and speaker ID here
|
| 171 |
if selected_model in onnx_models:
|
| 172 |
config = model_configurations[selected_model]
|
|
|
|
| 181 |
document.getElementById("synthesize_button").disabled = true;
|
| 182 |
</script>
|
| 183 |
"""
|
| 184 |
+
if selected_model in onnx_models:
|
| 185 |
+
# The selected_model is found in the list of model file paths
|
| 186 |
+
model_name = selected_model
|
| 187 |
+
config = load_model_configuration(model_name)
|
| 188 |
+
onnx_model = model_name # Replace with the actual key for your ONNX model file
|
| 189 |
+
if config:
|
| 190 |
+
model, _ = load_onnx(onnx_model, sess_options, providers)
|
| 191 |
+
speaker_id_map = config.get("speaker_id_map", {})
|
| 192 |
+
else:
|
| 193 |
+
# The selected_model is not found in the list; handle this case as needed
|
| 194 |
+
# You can show an error message or handle it differently
|
| 195 |
+
response_html = """
|
| 196 |
+
<div id="error-message">Selected model not found.</div>
|
| 197 |
+
<script>
|
| 198 |
+
document.getElementById("synthesize_button").disabled = true;
|
| 199 |
+
</script>
|
| 200 |
+
"""
|
|
|
|
|
|
|
|
|
|
| 201 |
auto_play = play
|
| 202 |
audio = inferencing(model, config, 1, text_input, speed_slider, noise_scale_slider, noise_scale_w_slider, auto_play)
|
| 203 |
temp_dir = tempfile.mkdtemp()
|
| 204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
|
|
|
|
|
|
|
| 206 |
renamed_audio_file = os.path.join(temp_dir, "download.mp3")
|
| 207 |
|
| 208 |
audio.export(renamed_audio_file, format="mp3")
|
|
|
|
| 224 |
document.getElementById("synthesize_button").disabled = false;
|
| 225 |
</script>
|
| 226 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 227 |
|
| 228 |
|
| 229 |
|