vnsd13 commited on
Commit
3ee532d
·
1 Parent(s): b29275e

push asr fux

Browse files
Files changed (1) hide show
  1. app/services/asr_service.py +41 -0
app/services/asr_service.py CHANGED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from groq import Groq
3
+ from dotenv import load_dotenv
4
+
5
+ # Muat variabel lingkungan dari file .env (jika ada)
6
+ load_dotenv()
7
+
8
+ # Ambil API KEY dari environment variable
9
+ GROQ_API_KEY = os.getenv("GROQ_API_KEY")
10
+
11
+ # Inisialisasi client Groq.
12
+ # Kalau GROQ_API_KEY kosong, dia bakal error nanti pas dipanggil.
13
+ # Jadi pastikan kamu sudah set di .env atau environment server.
14
+ client = Groq(api_key=GROQ_API_KEY)
15
+
16
+ async def transcribe_audio(audio_bytes: bytes, filename: str = "audio.m4a") -> str:
17
+ """
18
+ Menerima data audio (bytes) dan melakukan transkripsi menggunakan Groq Whisper.
19
+ Mengembalikan teks hasil transkripsi.
20
+ """
21
+ if not GROQ_API_KEY:
22
+ print("[ASR Service Error] GROQ_API_KEY belum diset, Baka!")
23
+ return ""
24
+
25
+ try:
26
+ # Panggil API Groq untuk transkripsi
27
+ # Kita pakai model 'whisper-large-v3-turbo' biar cepat & murah.
28
+ transcription = client.audio.transcriptions.create(
29
+ file=(filename, audio_bytes),
30
+ model="whisper-large-v3-turbo",
31
+ response_format="json", # Minta format JSON biar gampang diambil teksnya
32
+ language="id", # Paksa Bahasa Indonesia (opsional, bisa dihapus kalau mau auto-detect)
33
+ temperature=0.0 # Temperatur 0 biar hasilnya konsisten
34
+ )
35
+
36
+ return transcription.text
37
+
38
+ except Exception as e:
39
+ # Log error sederhana. Nanti kalau sudah produksi pakai logger beneran ya!
40
+ print(f"[ASR Service Error] Gagal transkrip: {e}")
41
+ return ""