Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Tạo mô hình phát hiện tiếng nói bất thường bằng AI
Hướng Dẫn Đồ ÁnLập Trình AI

Tạo mô hình phát hiện tiếng nói bất thường bằng AI

Chia sẻ
Chia sẻ

Phát hiện tiếng nói bất thường là một ứng dụng quan trọng trong AI, được dùng rộng rãi từ giám sát an ninh, hỗ trợ y tế đến trợ lý ảo. Các hệ thống này cần khả năng phân tích âm thanh để nhận biết những tiếng kêu lạ như tiếng hét, tiếng vỡ, hay tiếng ho kéo dài. Trong bài viết này, chúng ta sẽ sử dụng Python và TensorFlow để xây dựng một mô hình nhận diện âm thanh dựa trên dữ liệu thực tế.

Nếu bạn từng tìm hiểu về Ứng dụng AI nhận diện biển báo giao thông hoặc Tách đối tượng người ra khỏi ảnh nền, thì việc xử lý dữ liệu âm thanh sẽ mở rộng kiến thức của bạn sang một lĩnh vực hoàn toàn mới: audio processing.

Tập dữ liệu sử dụng

Chúng ta sẽ dùng UrbanSound8K, một tập dữ liệu gồm 8732 clip âm thanh (≤4 giây) thuộc 10 loại khác nhau như tiếng chó sủa, tiếng khoan, tiếng người hét, và tiếng súng. Đây là nguồn dữ liệu lý tưởng để huấn luyện một mô hình phát hiện tiếng nói bất thường.

📦 Link Kaggle Notebook: UrbanSound8K Classification
📥 Dataset: UrbanSound8K

Cấu trúc dữ liệu:

Trường Mô tả
slice_file_name Tên file âm thanh
fold Fold số (cho cross-validation)
class Nhãn lớp (ví dụ: gun_shot, dog_bark)
classID ID của lớp (0–9)

Xử lý và nạp dữ liệu âm thanh

Giải thích

Đầu tiên, chúng ta cần xử lý các file âm thanh để trích xuất đặc trưng phục vụ mô hình học máy. Một phương pháp phổ biến là sử dụng MFCC (Mel-frequency cepstral coefficients), giúp mô tả phổ âm thanh dưới dạng vector đặc trưng gọn nhẹ và giàu thông tin.

Chúng ta cũng chuẩn bị dữ liệu bằng cách chuẩn hóa và chia thành tập huấn luyện và kiểm tra, đảm bảo mô hình được đánh giá khách quan.

import pandas as pd
import numpy as np
import librosa
import os
from sklearn.model_selection import train_test_split

metadata = pd.read_csv('../input/urbansound8k/UrbanSound8K.csv')
X, y = [], []

for index, row in metadata.iterrows():
    file_path = os.path.join('../input/urbansound8k/fold'+str(row["fold"]), row["slice_file_name"])
    try:
        audio, sr = librosa.load(file_path, duration=4)
        mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=40)
        mfcc_scaled = np.mean(mfcc.T, axis=0)
        X.append(mfcc_scaled)
        y.append(row['classID'])
    except:
        continue

X = np.array(X)
y = np.array(y)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Xây dựng mô hình mạng nơ-ron

Mô hình Multi-Layer Perceptron (MLP) với các lớp Dense sẽ được sử dụng để phân loại âm thanh. Mô hình có thể được mở rộng sang CNN nếu bạn xử lý trực tiếp phổ âm (spectrogram). Việc thiết kế kiến trúc này giúp mô hình học được các mẫu âm thanh đặc trưng của tiếng nói bất thường.

Các lớp Dropout được thêm vào để giảm nguy cơ overfitting khi huấn luyện trên dữ liệu đa dạng như UrbanSound8K.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout

model = Sequential([
    Dense(256, activation='relu', input_shape=(40,)),
    Dropout(0.3),
    Dense(128, activation='relu'),
    Dropout(0.3),
    Dense(64, activation='relu'),
    Dropout(0.3),
    Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.summary()

Huấn luyện mô hình

Huấn luyện mô hình trên tập dữ liệu đã xử lý sẽ giúp mạng học cách phân loại các loại âm thanh khác nhau. Với mỗi epoch, mô hình sẽ cải thiện khả năng nhận diện tiếng nói bất thường trong dữ liệu kiểm tra.

Việc theo dõi độ chính xác và hàm mất mát giúp bạn điều chỉnh các siêu tham số để tối ưu hóa mô hình.

history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))

Đánh giá và thử nghiệm mô hình

Sau khi huấn luyện, chúng ta đánh giá mô hình trên tập kiểm tra để kiểm tra khả năng phân loại tiếng nói bất thường. Việc thử nghiệm trên âm thanh mới giúp xác định hiệu quả thực tế của hệ thống.

Bạn có thể mở rộng bằng cách tạo hệ thống cảnh báo khi phát hiện tiếng nói nguy hiểm như tiếng hét hoặc tiếng súng.

loss, accuracy = model.evaluate(X_test, y_test)
print(f"Độ chính xác trên tập test: {accuracy*100:.2f}%")

# Dự đoán một file âm thanh mới
def predict_audio(file_path):
    audio, sr = librosa.load(file_path, duration=4)
    mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=40)
    mfcc_scaled = np.mean(mfcc.T, axis=0).reshape(1, -1)
    prediction = model.predict(mfcc_scaled)
    classID = np.argmax(prediction)
    print("Âm thanh được dự đoán là:", metadata.loc[metadata['classID'] == classID]['class'].values[0])

predict_audio('../input/urbansound8k/fold1/7383-3-0-0.wav')

Kết luận

Bạn vừa xây dựng thành công một mô hình phát hiện tiếng nói bất thường bằng AI, từ xử lý dữ liệu âm thanh đến huấn luyện mạng nơ-ron và thử nghiệm dự đoán âm thanh mới. Hệ thống này có thể mở rộng để ứng dụng vào giám sát an ninh, chăm sóc sức khỏe, hoặc trợ lý ảo thông minh.

Bước tiếp theo, bạn có thể thử kiến trúc CNN+RNN để xử lý spectrogram hoặc huấn luyện với tập dữ liệu lớn hơn như AudioSet để tăng tính chính xác.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!