Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Request | |
| from fastapi.responses import JSONResponse | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from logic import synthesize_voice, plot_data, plot_waveforms | |
| import base64 | |
| from typing import Dict | |
| app = FastAPI() | |
| # You need to replace the placeholders above with the actual URLs for the models. | |
| # Allow requests from your Vercel domain | |
| origins = [ | |
| "https://host-test-smoky.vercel.app", | |
| # Add other allowed origins if needed | |
| ] | |
| # Set up CORS middleware | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=origins, | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| #aseda | |
| async def synthesize(request_data: Dict[str, str]): | |
| font_type = request_data['font_select'] | |
| input_text = request_data['input_text'] | |
| # Font selection logic (customize based on your requirements) | |
| if font_type == 'Preeti': | |
| # Implement Preeti font logic | |
| pass | |
| elif font_type == 'Unicode': | |
| # Implement Unicode font logic | |
| pass | |
| # Generate mel-spectrogram using Tacotron2 | |
| mel_output_data, mel_output_postnet_data, alignments_data = synthesize_voice(input_text, "Shruti_finetuned") | |
| # Convert mel-spectrogram to base64 for display in HTML | |
| mel_output_base64 = plot_data([mel_output_data, mel_output_postnet_data, alignments_data]) | |
| # Save the generated audio file | |
| audio_file_path = 'audio_output/mel1_generated_e2e.wav' | |
| # Plot the waveform | |
| wave_base64 = plot_waveforms(audio_file_path) | |
| # Encode audio content as Base64 | |
| with open(audio_file_path, 'rb') as audio_file: | |
| audio_base64 = base64.b64encode(audio_file.read()).decode('utf-8') | |
| # Customize the response based on the information you want to send to the frontend | |
| response_data = { | |
| 'mel_spectrogram': mel_output_base64, | |
| 'audio_data': audio_base64, | |
| 'waveform': wave_base64, | |
| 'some_other_data': 'example_value', | |
| } | |
| return JSONResponse(content=response_data) | |