Inial commited on
Commit
a90294a
·
verified ·
1 Parent(s): c51b93a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -28
app.py CHANGED
@@ -2,46 +2,39 @@ import gradio as gr
2
  import torch
3
  from transformers import AutoProcessor, VitsModel
4
  from scipy.io.wavfile import write
5
- import numpy as np
6
 
 
7
  model_id = "facebook/mms-tts-nko"
8
-
9
  processor = AutoProcessor.from_pretrained(model_id)
10
  model = VitsModel.from_pretrained(model_id)
11
- device = "cuda" if torch.cuda.is_available() else "cpu"
12
- model.to(device)
 
 
 
 
13
 
14
  def tts_nko(text):
15
  try:
16
- # Xử lý văn bản
17
- inputs = processor(text=text, return_tensors="pt")
18
-
19
- # Kiểm tra input_ids không rỗng
20
- if inputs["input_ids"].nelement() == 0:
21
- return "❌ Văn bản N'Ko không hợp lệ hoặc không được hỗ trợ.", None
22
-
23
- # Ép kiểu đúng cho mô hình VITS
24
- inputs["input_ids"] = inputs["input_ids"].long().to(device)
25
-
26
- # Tạo giọng nói
27
  with torch.no_grad():
28
- outputs = model(**inputs)
29
-
30
- audio = outputs.audio[0].cpu().numpy()
31
- audio_path = "nko_output.wav"
32
- write(audio_path, rate=model.config.sampling_rate, data=audio)
33
-
34
- return "✅ Đã tạo giọng đọc N'Ko", audio_path
35
  except Exception as e:
36
  return f"❌ Lỗi: {str(e)}", None
37
 
38
  with gr.Blocks() as demo:
39
- gr.Markdown("## 🗣️ TTS tiếng N'Ko (ߒߞߏ)")
40
- input_text = gr.Textbox(label="Nhập chữ N'Ko", value="ߞߊߟߊ ߛߌ߬")
41
- status = gr.Textbox(label="Trạng thái")
42
- audio_output = gr.Audio(label="Kết quả", type="filepath")
43
- button = gr.Button("Phát giọng nói")
44
 
45
- button.click(fn=tts_nko, inputs=[input_text], outputs=[status, audio_output])
46
 
47
  demo.launch()
 
2
  import torch
3
  from transformers import AutoProcessor, VitsModel
4
  from scipy.io.wavfile import write
 
5
 
6
+ # Khởi tạo model và processor
7
  model_id = "facebook/mms-tts-nko"
 
8
  processor = AutoProcessor.from_pretrained(model_id)
9
  model = VitsModel.from_pretrained(model_id)
10
+ model.to("cpu")
11
+
12
+ def transliterate_nko(text):
13
+ # Với mô hình MMS, có thể tự nhận dạng mã Latin (ví dụ như từ "kani").
14
+ # Nếu văn bản đã là chữ N'Ko gốc (ߞߐߣߌ), thì dùng luôn.
15
+ return text
16
 
17
  def tts_nko(text):
18
  try:
19
+ input_text = transliterate_nko(text)
20
+ inputs = processor(text=input_text, return_tensors="pt")
21
+ inputs["input_ids"] = inputs["input_ids"].long()
 
 
 
 
 
 
 
 
22
  with torch.no_grad():
23
+ output = model(**inputs)
24
+ audio = output.waveform[0].numpy()
25
+ path = "nko.wav"
26
+ write(path, rate=model.config.sampling_rate, data=audio)
27
+ return "✅ Đã phát sinh âm thanh từ văn bản N'Ko", path
 
 
28
  except Exception as e:
29
  return f"❌ Lỗi: {str(e)}", None
30
 
31
  with gr.Blocks() as demo:
32
+ gr.Markdown("# 🗣️ N'Ko TTS với Facebook MMS (ߒߞߏ)")
33
+ text_input = gr.Textbox(label="Nhập văn bản N'Ko (VD: ߞߐߣߌ)")
34
+ output_text = gr.Textbox(label="Kết quả")
35
+ output_audio = gr.Audio(label="Phát âm", type="filepath")
36
+ button = gr.Button("Phát")
37
 
38
+ button.click(fn=tts_nko, inputs=[text_input], outputs=[output_text, output_audio])
39
 
40
  demo.launch()