matrixcoder commited on
Commit
c1f680b
Β·
verified Β·
1 Parent(s): c2d5ee4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -10
app.py CHANGED
@@ -1,6 +1,7 @@
1
  """
2
  ESP32 TTS Server β€” Hugging Face Space
3
- WAV: 44100Hz, Stereo, 16-bit, Normalized + Boosted
 
4
  """
5
 
6
  from flask import Flask, request, Response
@@ -13,29 +14,31 @@ from pydub.effects import normalize
13
 
14
  app = Flask(__name__)
15
 
16
- BASE_DIR = os.path.dirname(os.path.abspath(__file__))
17
- CACHE_DIR = os.path.join(BASE_DIR, "tts_cache")
18
  os.makedirs(CACHE_DIR, exist_ok=True)
19
 
20
 
21
  def text_to_wav_bytes(text, lang):
22
- # Step 1: gTTS β†’ MP3 in memory (no disk write)
23
  mp3_buf = io.BytesIO()
24
  tts = gTTS(text, lang=lang)
25
  tts.write_to_fp(mp3_buf)
26
  mp3_buf.seek(0)
27
 
28
- # Step 2: Load + convert β€” 44100Hz, Stereo, 16-bit
29
  audio = AudioSegment.from_file(mp3_buf, format="mp3")
30
- audio = audio.set_frame_rate(44100).set_channels(2).set_sample_width(2)
31
 
32
  # Step 3: Normalize β€” consistent volume
33
  audio = normalize(audio)
34
 
35
- # Step 4: +3dB boost β€” DAC output thoda weak hota hai
36
- audio = audio + 3
 
 
 
37
 
38
- # Step 5: WAV bytes in memory
39
  wav_buf = io.BytesIO()
40
  audio.export(wav_buf, format="wav")
41
  wav_buf.seek(0)
@@ -43,7 +46,6 @@ def text_to_wav_bytes(text, lang):
43
 
44
 
45
  def get_wav(text, lang):
46
- # Cache check β€” same text pe instantly serve
47
  key = hashlib.md5((text + lang).encode()).hexdigest()
48
  cache_path = os.path.join(CACHE_DIR, key + ".wav")
49
 
 
1
  """
2
  ESP32 TTS Server β€” Hugging Face Space
3
+ WAV output: 22050Hz, Mono, 8-bit unsigned
4
+ ESP32 DAC ke liye perfect β€” direct mapping, no conversion
5
  """
6
 
7
  from flask import Flask, request, Response
 
14
 
15
  app = Flask(__name__)
16
 
17
+ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
18
+ CACHE_DIR = os.path.join(BASE_DIR, "tts_cache")
19
  os.makedirs(CACHE_DIR, exist_ok=True)
20
 
21
 
22
  def text_to_wav_bytes(text, lang):
23
+ # Step 1: gTTS β†’ MP3 in memory
24
  mp3_buf = io.BytesIO()
25
  tts = gTTS(text, lang=lang)
26
  tts.write_to_fp(mp3_buf)
27
  mp3_buf.seek(0)
28
 
29
+ # Step 2: Load audio
30
  audio = AudioSegment.from_file(mp3_buf, format="mp3")
 
31
 
32
  # Step 3: Normalize β€” consistent volume
33
  audio = normalize(audio)
34
 
35
+ # Step 4: Convert β€” 22050Hz, Mono, 8-bit unsigned
36
+ # ESP32 DAC = 8-bit (0-255), 22050Hz enough for clear voice
37
+ audio = audio.set_frame_rate(22050)
38
+ audio = audio.set_channels(1)
39
+ audio = audio.set_sample_width(1) # 8-bit unsigned (0-255)
40
 
41
+ # Step 5: WAV bytes
42
  wav_buf = io.BytesIO()
43
  audio.export(wav_buf, format="wav")
44
  wav_buf.seek(0)
 
46
 
47
 
48
  def get_wav(text, lang):
 
49
  key = hashlib.md5((text + lang).encode()).hexdigest()
50
  cache_path = os.path.join(CACHE_DIR, key + ".wav")
51