• Thứ Ba, 23/12/2003 11:03 (GMT+7)

    Câu hỏi :
    Khi nói vào micro, thuật toán nào giúp lưu lại những âm thanh mà ta vừa nói? Và để so sánh file âm thanh ta vừa ghi được với file âm thanh có sẵn trong máy thì phải dùng thuật toán nào?

    Trả lời :

    Tín hiệu âm thanh sẽ được nối vào ngõ microphone (hay LineIn) của soundcard, tại đây tính hiệu sẽ được dẫn đến ngõ vào của mạch A/D (mạch đổi tín hiệu từ tương tự - Analog sang dạng số - Digital). Mạch A/D của sound card có thể được cấu hình họat động bởi phần mềm, 2 thông số cấu hình cơ bản là tần số lấy mẫu (thường từ 8 KHz đến 44 KHz) và độ chính xác của giá trị lấy mẫu (8 bit hay 16 bit). Để giữ được âm thanh chất lượng cao, ta có thể thiết lập chế độ hoạt động của mạch A/D là 16 bit và 44 KHz. Tuy nhiên để dung hòa giữa chất lượng âm thanh và dung lượng bộ nhớ được dùng để chứa dữ liệu âm thanh, ta có thể thiết lập chế độ làm việc khác. Bằng phần mềm ta có thể đọc được chuỗi giá trị lấy mẫu được từ mạch A/D rồi ghi nó lên file theo format nào đó (thường là dạng *.wav).

    Về mặt lập trình trên môi trường Windows, bạn có thể dùng các hàm API sau đây để khởi động quá trình thu âm thanh từ soundcard (hay từ bất kỳ card nào có khả năng tương tự, chẳng hạn như card Voice Fax Modem....) :

    waveInGetNumDevs(), waveInOpen(), waveInAddBuffer(), waveInStart(), waveInStop(), waveInClose(),...

    Bạn có thể tham khảo các trang Web trong đĩa CD-ROM MSDN của Microsoft để biết thông tin chi tiết và cụ thể về cách gọi các hàm API trên để thu âm thanh.

    Vấn đề nhận dạng ngữ nghĩa và so sánh âm thanh không phải là chuyện dễ, hiện có rất nhiều công trình nghiên cứu về vấn đề này, một số đã đạt được nhiều kết quả khả quan nhưng vẫn còn nhiều thứ còn phải tiếp tục nghiên cứu để hoàn chỉnh.

    Chuyên mục: Lập trình