darsoarafa commited on
Commit
3b54ecb
·
verified ·
1 Parent(s): 2ec4176

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -10
app.py CHANGED
@@ -3,6 +3,9 @@ from transformers import pipeline
3
  import random
4
  import string
5
  import datetime
 
 
 
6
 
7
  # Daftar produk dan kategori
8
  categories = {
@@ -15,12 +18,32 @@ categories = {
15
  # Inisialisasi model pengenalan suara
16
  speech_recognizer = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h")
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  # Fungsi untuk mengonversi suara ke teks
19
  def speech_to_text(audio):
20
- if audio is None:
21
- return ""
22
- result = speech_recognizer(audio)
23
- return result["text"]
 
 
 
 
24
 
25
  # Fungsi untuk membuat dokumen LaTeX
26
  def create_latex(data, filename):
@@ -88,12 +111,16 @@ PT. Contoh Perusahaan
88
  def buat_penawaran(nama_prospek, alamat_prospek, jenis_prospek, produk_dipilih, jumlah_produk, harga_produk, diskon, tanggal, syarat, audio_input):
89
  # Proses input suara jika ada
90
  if audio_input:
91
- audio_text = speech_to_text(audio_input).lower()
92
- if "nama" in audio_text and not nama_prospek:
93
- nama_prospek = audio_text.split("nama")[-1].strip()
94
- if "alamat" in audio_text and not alamat_prospek:
95
- alamat_prospek = audio_text.split("alamat")[-1].strip()
96
- # Logika serupa dapat ditambahkan untuk field lain
 
 
 
 
97
 
98
  data = {
99
  'nama_prospek': nama_prospek if nama_prospek else "Prospek Tanpa Nama",
 
3
  import random
4
  import string
5
  import datetime
6
+ import librosa
7
+ import soundfile as sf
8
+ import numpy as np
9
 
10
  # Daftar produk dan kategori
11
  categories = {
 
18
  # Inisialisasi model pengenalan suara
19
  speech_recognizer = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h")
20
 
21
+ # Fungsi untuk memproses audio
22
+ def preprocess_audio(audio):
23
+ if audio is None:
24
+ return None
25
+ try:
26
+ # audio[0] adalah sampling rate, audio[1] adalah data audio
27
+ sr, y = audio
28
+ # Resample ke 16kHz
29
+ y = librosa.resample(y.astype(np.float32), orig_sr=sr, target_sr=16000)
30
+ # Simpan sementara ke file WAV
31
+ temp_file = "temp_audio.wav"
32
+ sf.write(temp_file, y, 16000)
33
+ return temp_file
34
+ except Exception as e:
35
+ return f"Error memproses audio: {str(e)}"
36
+
37
  # Fungsi untuk mengonversi suara ke teks
38
  def speech_to_text(audio):
39
+ processed_audio = preprocess_audio(audio)
40
+ if not isinstance(processed_audio, str) or processed_audio.startswith("Error"):
41
+ return processed_audio if processed_audio else ""
42
+ try:
43
+ result = speech_recognizer(processed_audio)
44
+ return result["text"]
45
+ except Exception as e:
46
+ return f"Error pengenalan suara: {str(e)}"
47
 
48
  # Fungsi untuk membuat dokumen LaTeX
49
  def create_latex(data, filename):
 
111
  def buat_penawaran(nama_prospek, alamat_prospek, jenis_prospek, produk_dipilih, jumlah_produk, harga_produk, diskon, tanggal, syarat, audio_input):
112
  # Proses input suara jika ada
113
  if audio_input:
114
+ audio_text = speech_to_text(audio_input)
115
+ if isinstance(audio_text, str) and not audio_text.startswith("Error"):
116
+ audio_text = audio_text.lower()
117
+ if "nama" in audio_text and not nama_prospek:
118
+ nama_prospek = audio_text.split("nama")[-1].strip()
119
+ if "alamat" in audio_text and not alamat_prospek;
120
+
121
+ alamat_prospek = audio_text.split("alamat")[-1].strip()
122
+ else:
123
+ return None, f"Peringatan: Gagal memproses input suara - {audio_text}"
124
 
125
  data = {
126
  'nama_prospek': nama_prospek if nama_prospek else "Prospek Tanpa Nama",