Spaces:
Sleeping
Sleeping
from flask import Flask, render_template, request, jsonify | |
import yt_dlp | |
import os | |
from detect import SimpleOfflineAccentClassifier | |
app = Flask(__name__) | |
classifier = SimpleOfflineAccentClassifier() | |
def home(): | |
return render_template('index.html') | |
def analyze(): | |
try: | |
video_url = request.form['url'] | |
# YouTube'dan ses indir | |
ydl_opts = { | |
'format': 'bestaudio/best', | |
'postprocessors': [{ | |
'key': 'FFmpegExtractAudio', | |
'preferredcodec': 'wav', | |
}], | |
'outtmpl': 'temp_audio', | |
'quiet': True, | |
'no_warnings': True, | |
'extract_flat': True, # Sadece ses indir | |
'noplaylist': True, # Playlist değil | |
'ignoreerrors': True, # Hataları görmezden gel | |
'no_check_certificate': True, # Sertifika kontrolünü atla | |
'prefer_insecure': True, # Güvenli olmayan bağlantıları tercih et | |
'http_headers': { # Tarayıcı gibi görün | |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', | |
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', | |
'Accept-Language': 'en-us,en;q=0.5', | |
'Sec-Fetch-Mode': 'navigate', | |
} | |
} | |
with yt_dlp.YoutubeDL(ydl_opts) as ydl: | |
ydl.download([video_url]) | |
# Ses dosyasını analiz et | |
result = classifier.predict_accent('temp_audio.wav') | |
# Geçici dosyayı temizle | |
if os.path.exists('temp_audio.wav'): | |
os.remove('temp_audio.wav') | |
if result is None: | |
return jsonify({'error': 'voice analyze failed.'}) | |
return jsonify(result) | |
except Exception as e: | |
return jsonify({'error': str(e)}) | |
if __name__ == '__main__': | |
app.run(debug=True, host='0.0.0.0', port=7860) |