Nhận dạng âm thanh là một lĩnh vực con liên ngành của ngôn ngữ học tính toán phát triển các phương pháp và công nghệ cho phép máy tính nhận dạng và dịch ngôn ngữ nói thành văn bản. Nhận dạng giọng nói thường được sử dụng để vận hành một thiết bị, thực hiện các lệnh và viết mà không cần sự trợ giúp của bàn phím, chuột hoặc nhấn bất kỳ nút nào.
Các bài viết liên quan:
Ngày nay, nó được thực hiện trên máy tính có chương trình phần mềm ASR (nhận dạng giọng nói tự động). Nhiều chương trình ASR yêu cầu người dùng “đào tạo” các chương trình ASR nhận dạng giọng nói của nó để có thể chuyển lời nói thành văn bản chính xác hơn.
Ví dụ: chúng ta có thể nói “mở Google chorme” và máy tính sẽ mở trình duyệt internet chrome.
Thiết bị ASR đầu tiên được sử dụng vào năm 1952 và nhận dạng các chữ số đơn lẻ được nói bởi bất kỳ người dùng nào. Trong Thời đại Ngày nay, các chương trình ASR được sử dụng trong nhiều ngành, bao gồm quân sự, chăm sóc sức khỏe, viễn thông và máy tính cá nhân.
Ví dụ trong đó chúng tôi có thể đã sử dụng nhận dạng giọng nói: giọng nói của Google, hệ thống điện thoại tự động, giọng nói kỹ thuật số, trợ lý kỹ thuật số, Bluetooth trên ô tô.
Các loại hệ thống nhận dạng giọng nói
Nhận dạng giọng nói tự động là một ví dụ về nhận dạng giọng nói. Dưới đây là một số ví dụ khác về hệ thống nhận dạng giọng nói.
- Hệ thống phụ thuộc vào loa – Nhận dạng giọng nói yêu cầu đào tạo trước khi có thể sử dụng, điều này yêu cầu chúng ta đọc một loạt các từ và cụm từ.
- Hệ thống độc lập với loa- Phần mềm nhận dạng giọng nói nhận dạng hầu hết giọng nói của người dùng mà không cần đào tạo.
- Nhận dạng giọng nói rời rạc- Người dùng phải tạm dừng giữa mỗi từ để nhận dạng giọng nói có thể xác định từng từ riêng biệt.
- Nhận dạng giọng nói liên tục – nhận dạng giọng nói có thể hiểu được tốc độ nói tiêu chuẩn.
- Ngôn ngữ tự nhiên – Nhận dạng giọng nói không chỉ có thể hiểu giọng nói mà còn có thể trả lại câu trả lời cho các câu hỏi hoặc các truy vấn khác đang được hỏi.
Giống như MNIST cho hình ảnh, điều này sẽ cung cấp cho chúng ta hiểu biết cơ bản về các kỹ thuật liên quan. Khi chúng tôi đã hoàn thành hướng dẫn Nhận dạng âm thanh TensorFlow này, chúng tôi sẽ có một mô hình cố gắng phân loại clip âm thanh một giây như sau:
- Silence
- An unknown word
- Yes
- No
- Up
- Down
- Left
- Right
- On
Đào tạo về nhận dạng âm thanh TensorFlow
Để bắt đầu quá trình đào tạo trong Nhận dạng âm thanh TensorFlow, hãy trình bày với nguồn TensorFlow và trình bày như sau:
Python tensorflow /amples / speech_commands / train.py
Lệnh này có thể tải xuống tập dữ liệu giọng nói, bao gồm 65k. Các tệp âm thanh Wav nơi mọi người nhìn thấy 30 từ khác nhau.
Ma trận nhầm lẫn trong TensorFlow
400 bước đầu tiên, sẽ cho chúng ta:
1. I0730 17:57:38.073667 55030 train.py:243] Confusion of the matrix: 2. [[258 0 0 0 0 0 0 0 0 0 0 0 0 ] 3. [ 7 6 76 94 7 49 1 15 50 2 0 11] 4. [ 10 1 107 80 13 33 0 13 10 1 0 4] 5. [ 1 3 16 164 6 48 0 5 10 1 0 17] 6. [ 15 1 17 114 44 13 0 9 22 5 0 9] 7. [ 1 1 6 97 3 86 1 12 46 0 0 10] 8. [ 8 6 84 86 13 24 1 9 9 1 6 0] 9. [ 9 3 32 112 9 26 1 36 19 0 0 9] 10. [ 9 2 12 94 9 49 0 6 72 0 0 2] 11. [ 16 1 39 75 29 52 0 6 37 9 0 3] 12. [ 15 6 17 71 60 37 0 6 32 3 1 9] 13. [ 11 1 6 151 5 43 0 8 16 0 0 20]]
Chúng ta thấy rằng phần đầu tiên là một ma trận. Mỗi cột đại diện cho một tập hợp các mẫu được ước tính cho mỗi từ khóa. Trong ma trận trên, cột đầu tiên đại diện cho tất cả các clip được dự đoán là im lặng, cột thứ hai đại diện cho các từ chưa biết, cột thứ ba “có”, v.v.
TensorBoard trong TensorFlow
Chúng tôi hình dung tiến trình đào tạo bằng TensorBoard. Các sự kiện được lưu vào / tmp / retrain_logs và được tải bằng cú pháp dưới đây:
tensorboard --logdir / tmp / retrain_logs
Đã hoàn thành đào tạo về nhận dạng âm thanh
Sau một số giờ đào tạo, tập lệnh hoàn thành khoảng 20.000 bước, in ra ma trận nhầm lẫn cuối cùng và phần trăm độ chính xác
Chúng tôi có thể xuất sang thiết bị di động ở dạng nhỏ gọn bằng cách sử dụng mã đã cho:
python tensorflow speech_commands/freeze.py\ --start_checkpoint=/tmp/speech_commands_train/conv.ckpt-18000 \ --output_file=/tmp/my_frozen_graph.pb
Hoạt động của mô hình nhận dạng giọng nói
Nó dựa trên loại CNN rất quen thuộc với bất kỳ ai đã làm việc với nhận dạng hình ảnh như chúng tôi đã có trong một trong các hướng dẫn trước đây. Âm thanh là tín hiệu 1-D và không bị nhầm lẫn đối với sự cố không gian 2D.
Bây giờ, chúng ta phải giải quyết vấn đề bằng cách xác định một khoảng thời gian mà lời nói của chúng ta sẽ phù hợp và thay đổi tín hiệu trong thời điểm đó thành hình ảnh. Chúng ta có thể làm điều này bằng cách nhóm âm thanh đến thành các đoạn ngắn và tính toán cường độ của tần số. Mỗi đoạn được coi như một vectơ số, được sắp xếp theo thời gian để tạo thành một mảng 2D. Mảng giá trị này có thể được coi như hình ảnh một kênh, còn được gọi là quang phổ. Chúng tôi có thể xem loại hình ảnh mà mẫu âm thanh tạo ra với:
bazel run tensorflow/examples/wav_to_spectogram:wav_to_spectogram -- \ --input_wav=/tmp/speech_dataset/happy/ab00c4b2_nohash_0.wv \ --output_png=/tmp/spectrogram.png
Đây là hình ảnh đại diện 2d, một kênh để chúng tôi cũng có xu hướng nó giống như một hình ảnh.
Hình ảnh được tạo ra sau đó được đưa vào một mạng nơ-ron phức hợp nhiều lớp, với một lớp được kết nối đầy đủ, theo sau là một softmax ở cuối.
Command Recognition trong TensorFlow
Unknown Class
Ứng dụng của chúng tôi có thể nghe thấy âm thanh không phải là một phần của bộ đào tạo của chúng tôi. Để khiến mạng tìm hiểu âm thanh nào cần tẩy chay, chúng tôi cần cung cấp các đoạn âm thanh không thuộc lớp học của chúng tôi. Để làm điều này, chúng ta có thể tạo ra tiếng la ó, meo meo và lấp đầy chúng bằng tiếng động từ động vật. Tập dữ liệu lệnh thoại bao gồm 20 từ trong các lớp chưa biết của nó, bao gồm các chữ số, từ 0 đến 9 cùng với các tên ngẫu nhiên.
Background Noise
Có tiếng ồn xung quanh trong bất kỳ đoạn âm thanh nào đã ghi. Để xây dựng một mô hình có khả năng chống lại những tiếng ồn như vậy, chúng ta cần huấn luyện mô hình đó chống lại âm thanh đã ghi có các thuộc tính giống hệt nhau. Các tệp trong bộ dữ liệu lệnh giọng nói đã được ghi lại trên nhiều thiết bị và trong các môi trường xung quanh khác nhau, để giúp ích cho việc đào tạo.
Sau đó, chúng tôi có thể chọn ngẫu nhiên các phần trích xuất nhỏ từ các tệp cùng với trộn với âm lượng thấp thành các clip trong quá trình đào tạo.
Customizing
Mô hình được sử dụng cho tập lệnh, rất lớn, sử dụng các tham số trọng lượng 940k sẽ có quá nhiều phép tính để chạy ở tốc độ trên các thiết bị có tài nguyên hạn chế. Các tùy chọn khác để chống lại điều này là:
low_latency_conv: Độ chính xác thấp hơn so với chuyển đổi, nhưng lượng thông số trọng lượng gần giống nhau và nhanh hơn nhiều
Chúng ta nên chỉ định-model-architecture = low_latency_conv để sử dụng mô hình này trên dòng lệnh.
Chúng ta nên thêm các tham số là tỷ lệ học tập = 0,01 và bước = 20.000.
low_latency_svdf: Độ chính xác thấp hơn so với chuyển đổi nhưng nó chỉ sử dụng tham số 750k và thực thi được tối ưu hóa. Nhập-model_architecture = low_latency_svdf trên dòng lệnh để sử dụng mô hình và chỉ định tốc độ đào tạo và số bước cùng với:
python tensorflow/examples/speech_commands/train \ --model_architecture=low_latency_svdf \ --how_many_training_steps=100000,35000 \ --learning_rate=0.01,0.005