Ghi chú quá trình nghiên cứu chương trình voice bot command 2021, nhận lệnh xử lý bằng tiếng Việt offline. Mình đã bắt đầu được khoảng 1 tuần nay quá quyết liệt nhất từ hôm 15/5/2021 hầu như cả ngày ngồi research và hôm nay 16/5/2021.
Ý tưởng này mình đã nghĩ ra được khá lâu sau khi đã thực hiện dự án FaceDia, lúc đầu thử nghiên cứu nhưng thất bại là không công, tỉ lệ tranning ML vô cùng thấp. Song, không bỏ cuộc quyết biến nó thành đồ án tốt nghiệp.
Mình tiến hành nghiên cứu các đồ thị âm thanh, lúc đầu không biết từ khóa là gì tra cứu rồi xuất hiện từ khóa waveform rồi từ đó làm nền tảng để tra cứu ra them nhiều loại biểu đồ khác.
Lúc bắt đầu mình đã thực hiện với Javascirpt để hiển thị biểu đồ Waveform lúc này thử nghiệm khá ổn nhưng vì ở dạng Javascipt nên khó xử lý sâu nên tạm gác lại và tìm giải pháp trên phần mềm bằng C# hoặc VB.NET.
Cuối cùng, tìm ra được cách vẽ đồ thị dạng Waveform trên VB.NET không dung thư viện. Tuy nhiên, độ chi tiết của nó không đủ để đáp ứng quá trình ML tranning so với bên Javascript. Nên quyết định tìm kiếm giải pháp khác và tìm ra thư viện NAudio trên nền tảng C# với nhiều mẫu đồ thị cho thư viên cung cấp tuy nhiên đó là các kiểu khác của Waveform nên vẫn không phù hợp lắm [1] , vì đã thử các kiểu đó tranning nhưng không khả thi và kết quả nhận dạng sai cao nên quyết định tìm cách khác (biểu đồ khác) và cuối cùng tìm ra được trang với nhiều loại biểu đồ khác nhau sử dụng thư viện NAudio [2]
Lựa chọn tiếp theo là sơ đồ, Spectrogram nó đã đập vào mắt mình và mình đã chọn nó vì nhìn nó khả thi hơn các loại sơ đồ khác và tiến hành nghiên cứu thử nghiệm. Mình quên đề cập đến ứng dụng com.fragileheart.recorder, nó đã hỗ trợ mình ghi âm giọng nói với bộ lọc tạp âm để mình dung làm âm thanh gốc để tranning dữ liệu.
Tiến hành tạo dataset (thật ra các bước thử nghiệm trên đã tạo và cái này mới mãnh liệt nhất), ban đầu ghi mỗi mục nhận dạng khoảng 25 file (đã thử cách cải tiến dữ liệu như bên FaceDia nhưng không phù hợp với giải pháp này) rồi lên 50 files 125 rồi lên đến 180 files đến bây giờ.
Các file âm thanh sau khi ghi sẽ được chuyển sang máy tính và dùng tool đã tạo chuyển sang sơ đồ dạng Spectrogram. Chúng ta tiến hành chuyển âm thanh sang dạng ảnh để tiên hành tranning cho ML học cuối cùng kết quả đạt được đáng kinh ngạc. Tỉ lể nhận dạng đến 95%!! Cao nhất trong tất cả các loại biểu đồ khác đã thử nghiệm. Sau khi thử nghiệm xong, tiến hành tạo các file âm thanh mới và chuyển thành sơ đồ Spectrogram để nhận dạng và kết quả thành công. Nhưng đến đây lại gặp một vấn đề khác.
Sử dụng tool đã viết để ghi âm và tạo ảnh sơ đồ Spectrogram không cùng định dạng nên tỉ lệ nhận dạng sai, không lẽ bây giờ phụ thuộc vào ứng dụng com.fragileheart.recorder ghi âm nó và lấy nó xử lý, quá gừm gà đi?
Cảm thấy không được, nên quyết định phân tích file âm thanh tạo ra từ úng dụng kia và phân tích tích các thông số để record tạo ra file có cùng định dang, khi tìm kiếm mình đã search từ khóa “bit rates 705kbps” và cuối cùng cũng có kết quả, mình đã tìm ra cách ghi âm ở cùng định dang bit rates đó vì mình đã thử trước đó là 88kbps, 1145kbps, nhưng vẫn chưa hiểu sao cho ra 705 đúng kiểu kia và search phía trên đã ra được cách nhờ một trang web forum của Nga. [3]
Cuối cùng thành công và đạt được kết quả nghiên cứu như mong đời, bây giờ từ phần lõi này tiến hành nghiên cứu nâng cao lên.
Bài ghi chú lúc 10:56 phút sáng 16/5/2021.
Bản ghi chú lúc 5:15 chiều ngày 18/05.2021.
Sau khi nghiên cứu thành công các bước trước, ngày 17, 18 tiếp tục them dataset và cải tiến chất lượng dữ liệu để nâng cao mức độ nhận dạng. Do phụ thuộc vào cấu hình máy quá trình tranning dữ liệu diễn ra chậm. Vì vậy, quá trình kiểm tra thử dữ liệu cũng trì hoãn theo.
Bài ghi chú lúc 9h40 pm gày 20/05/2021
Tiếp tục tranning cải tiến bộ dữ liệu, kết quả nhận thấy dữ liệu them nhiều nhưng quá trình tranning thời đã giảm đi đáng kể so với cá ngày trước đó đến 7-8h còn chưa đến một giờ với hơn 17 nghìn tấm ảnh dataset. Gần như kết quả nhận dạng và test gần như đúng cao trên 90%.
Bài ghi chú lúc 9:33 am 22/05/2021
Đã hiểu được cách hoạt động và nghiên cứu thành công, bây giờ chỉ cần cải tiến dataset để nâng cáo khả năng nhận dạng. Bài nghiên cứu tạm dừng tại đây.
Reference
- https://github.com/naudio/NAudio.WaveFormRenderer
- https://github.com/swharden/Csharp-Data-Visualization
- https://masterdrive.it/c-c-21/win32-mcisendstring-registrazione-audio-51408/index3.html