shon98 commited on
Commit
05f8512
ยท
verified ยท
1 Parent(s): 3018c99

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -16
app.py CHANGED
@@ -4,8 +4,7 @@ import time
4
  import json
5
  from fastapi import FastAPI, Request
6
  from fastapi.responses import StreamingResponse
7
- # ื™ื™ื‘ื•ื ืžื”ื—ื‘ื™ืœื” ืฉื”ื•ืชืงื ื” ืžื”-Git
8
- from phonikud import Phonikud, phonemize
9
  from google import genai
10
  from google.genai import types
11
 
@@ -14,7 +13,7 @@ logger = logging.getLogger(__name__)
14
 
15
  app = FastAPI()
16
 
17
- # ื˜ืขื™ื ืช ื”ืžื•ื“ืœ (ืฉื™ืžื•ืฉ ื‘ื ืชื™ื‘ ื”ืžืงื•ืžื™ ืฉืœืš)
18
  MODEL_PATH = "./phonikud-1.0.int8.onnx"
19
  pk = Phonikud(MODEL_PATH) if os.path.exists(MODEL_PATH) else None
20
 
@@ -26,7 +25,7 @@ async def chat_proxy(request: Request):
26
  body = await request.json()
27
  messages = body.get("messages", [])
28
 
29
- # ื‘ื ื™ื™ืช ื”ืงื•ื ื˜ืงืกื˜ ืœ-Gemini 2.5 Flash
30
  system_instruction = ""
31
  contents = []
32
  for msg in messages:
@@ -36,7 +35,7 @@ async def chat_proxy(request: Request):
36
  role = "user" if msg["role"] == "user" else "model"
37
  contents.append(types.Content(role=role, parts=[types.Part(text=msg["content"])]))
38
 
39
- # 1. Gemini ืžื™ื™ืฆืจ ืืช ื”ืชืฉื•ื‘ื”
40
  response = client.models.generate_content(
41
  model='gemini-2.5-flash',
42
  contents=contents,
@@ -46,23 +45,21 @@ async def chat_proxy(request: Request):
46
  original_text = response.text or ""
47
  logger.info(f"Gemini: {original_text}")
48
 
49
- # 2. ื”ืคื™ื›ื” ืœืคื•ื ืžื•ืช (IPA) ื‘ืคื•ืจืžื˜ ืงืจื˜ืกื™ื”
50
  final_output = original_text
51
  if pk and original_text:
52
  try:
53
- # ื) ื”ื•ืกืคืช ื ื™ืงื•ื“
54
  vocalized = pk.add_diacritics(original_text)
55
- # ื‘) ื”ืžืจื” ืœืคื•ื ืžื•ืช IPA
56
- phonemes = phonemize(vocalized)
57
- # ื’) ืขื˜ื™ืคื” ืขื‘ื•ืจ ืงืจื˜ืกื™ื” (ื”ืกืจืช ืงื•ื•ื™ื ืžื™ื•ืชืจื™ื)
58
- clean_ipa = phonemes.replace('|', '')
59
- final_output = f"<<{clean_ipa}>>"
60
-
61
- logger.info(f"Cartesia Phonemes: {final_output}")
62
  except Exception as e:
63
  logger.error(f"Phonemization failed: {e}")
64
 
65
- # 3. ื”ื–ืจืžื” ืœื•ื•ืืคื™ (SSE)
66
  def generate_vapi_stream():
67
  chat_id = f"chatcmpl-{int(time.time())}"
68
  chunk = {
@@ -81,4 +78,8 @@ async def chat_proxy(request: Request):
81
 
82
  except Exception as e:
83
  logger.error(f"Error: {str(e)}")
84
- return {"error": str(e)}, 500
 
 
 
 
 
4
  import json
5
  from fastapi import FastAPI, Request
6
  from fastapi.responses import StreamingResponse
7
+ from phonikud import Phonikud, phonemize # ื™ื™ื‘ื•ื ืจืฉืžื™ ืžื”ืกืคืจื™ื™ื”
 
8
  from google import genai
9
  from google.genai import types
10
 
 
13
 
14
  app = FastAPI()
15
 
16
+ # ื˜ืขื™ื ืช ื”ืžื•ื“ืœ (ื”ืงื•ื‘ืฅ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื‘ืชื™ืงื™ื™ื” ื”ืจืืฉื™ืช ืฉืœ ื”-Space)
17
  MODEL_PATH = "./phonikud-1.0.int8.onnx"
18
  pk = Phonikud(MODEL_PATH) if os.path.exists(MODEL_PATH) else None
19
 
 
25
  body = await request.json()
26
  messages = body.get("messages", [])
27
 
28
+ # ื‘ื ื™ื™ืช ื”ื”ืงืฉืจ ืœื“ื ื™ืืœ
29
  system_instruction = ""
30
  contents = []
31
  for msg in messages:
 
35
  role = "user" if msg["role"] == "user" else "model"
36
  contents.append(types.Content(role=role, parts=[types.Part(text=msg["content"])]))
37
 
38
+ # 1. ืงื‘ืœืช ืชืฉื•ื‘ื” ืž-Gemini
39
  response = client.models.generate_content(
40
  model='gemini-2.5-flash',
41
  contents=contents,
 
45
  original_text = response.text or ""
46
  logger.info(f"Gemini: {original_text}")
47
 
48
+ # 2. ื”ืคื™ื›ื” ืœืคื•ื ืžื•ืช IPA (ื”ืฉื™ื˜ื” ืžื”ืžืืžืจ)
49
  final_output = original_text
50
  if pk and original_text:
51
  try:
52
+ # ื”ื•ืกืคืช ื ื™ืงื•ื“
53
  vocalized = pk.add_diacritics(original_text)
54
+ # ื”ืžืจื” ืœืคื•ื ืžื•ืช IPA
55
+ ipa = phonemize(vocalized)
56
+ # ืขื˜ื™ืคื” ืœืงืจื˜ืกื™ื” (ื ื™ืงื•ื™ ืชื•ื•ื™ื ืžื‘ื ื™ื™ื ื‘ืžื™ื“ืช ื”ืฆื•ืจืš)
57
+ final_output = f"<<{ipa.replace('|', '')}>>"
58
+ logger.info(f"IPA for Cartesia: {final_output}")
 
 
59
  except Exception as e:
60
  logger.error(f"Phonemization failed: {e}")
61
 
62
+ # 3. ื”ื–ืจืžื” ื‘ืคื•ืจืžื˜ ืฉื•ื•ืืคื™ ืžื‘ื™ื ื”
63
  def generate_vapi_stream():
64
  chat_id = f"chatcmpl-{int(time.time())}"
65
  chunk = {
 
78
 
79
  except Exception as e:
80
  logger.error(f"Error: {str(e)}")
81
+ return {"error": str(e)}, 500
82
+
83
+ if __name__ == "__main__":
84
+ import uvicorn
85
+ uvicorn.run(app, host="0.0.0.0", port=7860)