WillemVH commited on
Commit
67861f2
·
verified ·
1 Parent(s): 6cab1bb

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, send_file, request
2
+ import subprocess
3
+ import os
4
+ import uuid
5
+
6
+ app = Flask(__name__)
7
+
8
+ # Hugging Face Spaces uses /tmp for writable storage
9
+ AUDIO_DIR = "/tmp/tts_audio"
10
+ os.makedirs(AUDIO_DIR, exist_ok=True)
11
+
12
+ @app.route('/speak')
13
+ def speak():
14
+ text = request.args.get('input', '')
15
+ if not text:
16
+ return "Error: Add ?input=Your+Text to the URL", 400
17
+
18
+ # Generate filenames
19
+ wav_path = os.path.join(AUDIO_DIR, f"{uuid.uuid4()}.wav")
20
+ mp3_path = wav_path.replace('.wav', '.mp3')
21
+
22
+ # Step 1: Use eSpeak to create WAV
23
+ subprocess.run([
24
+ 'espeak-ng',
25
+ '-v', 'en-us',
26
+ '-s', '150',
27
+ '-w', wav_path,
28
+ text
29
+ ], check=True)
30
+
31
+ # Step 2: Convert to MP3 (ffmpeg is preinstalled on HF Spaces)
32
+ subprocess.run([
33
+ 'ffmpeg',
34
+ '-i', wav_path,
35
+ '-vn',
36
+ '-ar', '44100',
37
+ '-ac', '2',
38
+ '-b:a', '192k',
39
+ mp3_path
40
+ ], check=True)
41
+
42
+ # Return MP3 as raw audio stream
43
+ return send_file(
44
+ mp3_path,
45
+ mimetype="audio/mpeg",
46
+ as_attachment=False # Let browser play it directly
47
+ )
48
+
49
+ if __name__ == '__main__':
50
+ app.run()