vankienemk's picture
Update app.py
34f8403 verified
import gradio as gr
import torch
import torchaudio
import numpy as np
from ichigo_asr.demo.utils import load_model
# Hàm tải mô hình Ichigo Whisper với map_location=cpu
def init_model():
try:
# Chỉ định rõ ràng map_location='cpu' để tải mô hình trên CPU
ichigo_model = load_model(
ref="homebrewltd/ichigo-whisper:merge-medium-vi-2d-2560c-dim64.pth",
size="merge-medium-vi-2d-2560c-dim64",
map_location=torch.device('cpu') # Thêm tham số này
)
device = "cpu" # Chỉ sử dụng CPU
ichigo_model.ensure_whisper(device)
ichigo_model.to(device)
return ichigo_model, device
except Exception as e:
print(f"Lỗi khi tải mô hình: {e}")
return None, "cpu"
# Khởi tạo mô hình
ichigo_model, device = init_model()
def transcribe(audio_path):
if ichigo_model is None:
return "Không thể tải mô hình. Vui lòng kiểm tra logs."
try:
# Tải file âm thanh
wav, sr = torchaudio.load(audio_path)
# Chuyển đổi sang 16kHz nếu cần
if sr != 16000:
wav = torchaudio.functional.resample(wav, sr, 16000)
# Chuyển đổi sang mono nếu là stereo
if wav.shape[0] > 1:
wav = wav.mean(dim=0, keepdim=True)
# Đảm bảo dữ liệu nằm trên CPU
wav = wav.to(device)
# Thực hiện dự đoán
transcribe_result = ichigo_model.inference(wav)
# Trả về kết quả
return transcribe_result[0].text
except Exception as e:
return f"Lỗi khi nhận dạng giọng nói: {str(e)}"
# Tạo giao diện Gradio
title = "Ichigo Whisper Speech Recognition Demo"
description = """
# 🍓 Ichigo Whisper Speech Recognition
Sử dụng mô hình Ichigo-whisper để nhận dạng giọng nói.
Mô hình này có hiệu suất tốt cho cả tiếng Anh và tiếng Việt!
"""
demo = gr.Interface(
fn=transcribe,
inputs=gr.Audio(sources=["microphone", "upload"], type="filepath"),
outputs=gr.Textbox(label="Phiên âm"),
title=title,
description=description
)
# Khởi chạy ứng dụng
if __name__ == "__main__":
demo.launch()