Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -82,15 +82,23 @@ async def voice_chat(request: Request):
|
|
| 82 |
try:
|
| 83 |
raw_audio = await request.body()
|
| 84 |
sample_rate = 16000
|
| 85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
# Chuyển thành WAV
|
| 88 |
wav_io = io.BytesIO()
|
| 89 |
-
wav.write(wav_io, sample_rate,
|
| 90 |
wav_io.seek(0)
|
| 91 |
|
| 92 |
with open("temp_audio.wav", "wb") as f:
|
| 93 |
-
|
| 94 |
|
| 95 |
# Whisper nhận dạng
|
| 96 |
result = whisper_model.transcribe("temp_audio.wav", language="vi")
|
|
|
|
| 82 |
try:
|
| 83 |
raw_audio = await request.body()
|
| 84 |
sample_rate = 16000
|
| 85 |
+
|
| 86 |
+
# Chuyển từ 3 bytes → int32
|
| 87 |
+
audio_np = np.frombuffer(raw_audio, dtype=np.uint8).reshape(-1, 3)
|
| 88 |
+
audio_int = (audio_np[:, 0].astype(np.int32) << 16) | \
|
| 89 |
+
(audio_np[:, 1].astype(np.int32) << 8) | \
|
| 90 |
+
audio_np[:, 2].astype(np.int32)
|
| 91 |
+
|
| 92 |
+
# Scale về int16 để ghi WAV
|
| 93 |
+
audio_int16 = (audio_int >> 8).astype(np.int16)
|
| 94 |
|
| 95 |
# Chuyển thành WAV
|
| 96 |
wav_io = io.BytesIO()
|
| 97 |
+
wav.write(wav_io, sample_rate, audio_int16)
|
| 98 |
wav_io.seek(0)
|
| 99 |
|
| 100 |
with open("temp_audio.wav", "wb") as f:
|
| 101 |
+
f.write(wav_io.read())
|
| 102 |
|
| 103 |
# Whisper nhận dạng
|
| 104 |
result = whisper_model.transcribe("temp_audio.wav", language="vi")
|