Đây là một quy trình nhận dạng giọng nói điển hình mình sẽ giải thích chi tiết hơn ở bên dưới.
1. Quá trình nhận dạng giọng nói bắt đầu trực tiếp từ dạng sóng thô.
Dạng sóng ban đầu bị nhiễm các kỹ thuật biến đổi giọng nói khác nhau như thay đổi tốc độ, thêm tiếng ồn, độ vang, v.v.
Những nhiễu này được thêm vào ngẫu nhiên theo một số xác suất do người dùng chỉ định.
Chúng cũng được thêm vào một cách nhanh tróng mà không cần lưu trữ các tín hiệu tăng cường trên ổ đĩa.
2. Trích xuất các tính năng giọng nói
Chẳng hạn như Short-Term Fourier Transform (STFT), spectrograms, FBANK và MFCC. Ngoài ra, các tính năng có thể được tính toán nhanh chóng nhờ vào việc triển khai với GPU rất hiệu quả.
3. Đưa các feature vào trình nhận dạng giọng nói
Đây là một neural network ánh xạ chuỗi đầu vào của các tính năng thành chuỗi token đầu ra (ví dụ: âm vị, ký tự, subwords, words). Các kỹ thuật phổ biến như Connectionist Temporal Classification (CTC), Transducers, or Encoder/Decoder (sử dụng cả hệ thống dựa trên RNN và Transformer-based).
4. Khám phá lựa chọn thay thế và kết quả tốt nhất bằng Beamsearch
Các xác suất đối với các chuỗi token đầu ra được xử lý bởi một thuật toán Beamsearch để khám phá các lựa chọn thay thế khác nhau và đưa ra kết quả tốt nhất. Các lựa chọn thay thế có thể được thay đổi tùy chọn với mô hình ngôn ngữ bên ngoài có thể dựa trên RNN hoặc Transformer.
Không phải tất cả các mô-đun được đề cập ở đây là bắt buộc. Ví dụ, thêm nhiễu có thể được bỏ qua nếu không hữu ích cho một nhiệm vụ cụ thể. Thậm chí beasearch có thể được thay thế bằng một tìm kiếm tham lam.
Một số kỹ thuật của module speech recognition
Connectionist Temporal Classification (CTC)
Nó là một mạng RNN, đối với mỗi timestep, nó sẽ xuất ra một dự đoán. CTC thêm một token đặc biệt được gọi là blank. Điều đó cho phép mạng không đưa ra gì khi không chắc chắn về những gì sẽ đưa ra. Hàm loss CTC sử dụng dynamic programming để căn chỉnh.
Transducers
Transducers (đôi khi được gọi là “Transducers RNN” hoặc “RNN-T”, mặc dù nó không cần sử dụng RNN) là một mô hình trình tự nối tiếp do Alex Graves đề xuất. Graves đã chỉ ra rằng Transducers là một mô hình hợp lý để sử dụng để nhận dạng giọng nói, đạt được kết quả tốt trên một tập dữ liệu nhỏ (TIMIT).
Transducers đã không được sử dụng nhiều so với các mô hình CTC (như Deep Speech 2) hoặc các mô hình attention (như Listen, Attend, and Spell). Tuy nhiên, vào năm 2019, Transducer đã gây được sự chú ý lớn khi các nhà nghiên cứu của Google cho thấy rằng nó có thể cho phép nhận dạng giọng nói có độ trễ thấp hoàn toàn trên thiết bị cho điện thoại Pixel. Và gần đây hơn, Transducers đã được sử dụng để đạt được tỷ lệ lỗi từ hiện đại mới cho điểm chuẩn LibriSpeech.
Encoder-Decoder with attention
Một cách phổ biến khác để tiếp cận nhận dạng giọng nói là thông qua kiến trúc Encoder-Decoder. Encoder từ một chuỗi các feature giọng nói (hoặc từ raw data) và tạo ra một chuỗi trạng thái
[imath]h[/imath]
. Decoder từ trạng thái ẩn cuối cùng và xuất ra N token đầu ra. Decoder thường tự động hồi quy (tức là đầu ra trước đó được đưa trở lại đầu vào). Quá trình giải mã bị dừng khi token cuối câu (eos) được dự đoán. Encoder-Decoder có thể dựa trên bất kỳ kiến trúc thần kinh nào (ví dụ: RNN, CNN, Transformers hoặc kết hợp của chúng).
Beamsearch
Nó bắt đầu từ một token và dự đoán N token tiếp theo hứa hẹn nhất. Sau đó, đưa N lựa chọn thay thế này vào Decoder và chọn giả thuyết N tốt nhất. Chúng ta lặp lại theo cách này cho đến khi token được dự đoán.
Tổng kết
Bài viết chỉ mang tính chất giới thiệu về công nghệ nhận dạng giọng nói. Trong các bài viết sau mình sẽ hướng dẫn các bạn hiểu rõ từng thành phần đã giới thiệu ở đây.