def install_packages():
required_packages = ["transformers", "torch", "gradio", "SpeechRecognition", "textdistance"]
for package in required_packages:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
install_packages()
Import các thư viện
import speech_recognition as sr
import textdistance
import gradio as gr
Hàm xử lý file ghi âm
def analyze_pronunciation(audio_file, reference_text):
"""
Phân tích phát âm của người dùng dựa trên file ghi âm và văn bản tham chiếu.
"""
recognizer = sr.Recognizer()
try:
# Đọc file ghi âm
with sr.AudioFile(audio_file) as source:
audio = recognizer.record(source)
user_text = recognizer.recognize_google(audio) # Chuyển âm thanh thành văn bản
except sr.UnknownValueError:
return "Không thể nhận diện giọng nói. Vui lòng thử lại!", ""
except sr.RequestError:
return "Lỗi khi truy cập dịch vụ nhận diện giọng nói. Vui lòng kiểm tra kết nối mạng.", ""
# So sánh văn bản người dùng với văn bản chuẩn
similarity = textdistance.cosine.normalized_similarity(reference_text.lower(), user_text.lower())
score = round(similarity * 100, 2)
# Kết quả
result = (
f"Phát âm của bạn giống {score}% so với văn bản chuẩn.\n\n"
f"**Văn bản chuẩn:** {reference_text}\n"
f"**Bạn đã nói:** {user_text}"
)
return result, user_text
Giao diện Gradio
with gr.Blocks() as demo:
gr.Markdown("## AI Chỉnh sửa phát âm qua file ghi âm")
audio_input = gr.Audio(source="microphone", type="filepath", label="Tải lên file ghi âm của bạn")
reference_text = gr.Textbox(label="Nhập văn bản chuẩn", placeholder="Ví dụ: Hello, how are you?")
output = gr.Textbox(label="Kết quả phân tích")
submit = gr.Button("Phân tích")