Phần 20. Nhận dạng giọng nói bằng thiết bị IoT

0
1506

Video dưới đây giới thiệu tổng quan về dịch vụ giọng nói Azure- chủ đề được đề cập trong bài viết này:

Các thiết bị thông minh đang trở lên ngày càng phổ biến. Đó là loa thông minh HomePods, Echos, Google Homes hoặc tích hợp trong điện thoại, đồng hồ hay nhiều thiết bị khác.

Việc điều khiển những thiết bị này bằng giọng nói rất hữu ích và tiện lợi, đặc biệt giúp mở ra một thế giới truy cập đối với những người hạn chế về khả năng di chuyển như người khuyết tật hoặc trẻ nhỏ.

Một trong những cách sử dụng phổ biến của trợ lý ảo giọng nói (voice assistants- VA) là đặt bộ hẹn giờ, đặc biệt là hẹn giờ trong bếp. Người dùng có thể đặt nhiều bộ hẹn giờ chỉ bằng giọng nói mà không phải ngừng các hoạt động đang thực hiện như nhào bột, khuấy súp,… để đặt bộ hẹn giờ vật lý, vì vậy, đây là một ứng dụng rất hữu ích.

Bài viết này sẽ trình bày cách thiết lập các thiết bị IoT để nhận dạng giọng nói. Trong bài viết sẽ giới thiệu về cách sử dụng micrô như là một cảm biến, cách thu âm thanh từ  micrô đã gắn vào thiết bị IoT và cách sử dụng AI để chuyển nội dung nghe được thành văn bản. Phần cuối của project này sẽ hướng dẫn thiết lập một bộ hẹn giờ nhà bếp thông minh bằng cách đặt bộ hẹn giờ bằng giọng nói với nhiều ngôn ngữ khác nhau.

Những nội dung chính trong bài viết này gồm:

1. Giới thiệu về Micrô

2. Cách ghi lại âm thanh từ thiết bị IoT

3. Chuyển lời nói thành văn bản

4. Cách chuyển lời nói thành văn bản

1. Giới thiệu về Micrô

Micrô là cảm biến tương tự giúp chuyển đổi sóng âm thanh thành tín hiệu điện. Những dao động trong không khí làm cho các thành phần trong micrô chuyển động một lượng nhỏ gây ra những thay đổi nhỏ trong tín hiệu điện. Những thay đổi này sau đó được khuếch đại để tạo ra đầu ra điện.

Các loại micrô

Micro có nhiều loại như:

Động (Dyamic)– Micrô điện động có nam châm gắn với màng ngăn có thể di chuyển mà khi nó chuyển động trong cuộn dây sẽ tạo ra dòng điện. Điều này ngược lại với hầu hết các loa- sử dụng dòng điện để di chuyển nam châm trong cuộn dây, di chuyển màng ngăn để tạo ra âm thanh, do đó loa có thể được sử dụng làm micrô điện động và ngược lại. Trong các thiết bị như hệ thống liên lạc nội bộ, người dùng đang nghe hoặc nói chứ không nghe và nói đồng thời. Đây là một thiết bị có thể hoạt động như một loa và micrô.

Micro điện động không cần nguồn điện để hoạt động, tín hiệu điện được tạo hoàn toàn từ micro.

Ruy-băng (Ribbon)– Micrô ruy-băng tương tự như micrô điện động, chỉ khác là chúng có dải băng kim loại thay cho màng ngăn. Ruy-băng này di chuyển trong từ trường tạo ra dòng điện. Giống như micrô điện động, micrô ruy-băng không cần nguồn điện để hoạt động.

Tụ điện (Condenser) – Micrô tụ điện có một màng ngăn kim loại mỏng và một tấm kim loại cố định phía sau. Khi màng ngăn rung động, điện tích tĩnh giữa các tấm thay đổi tạo ra tín hiệu. Micro tụ điện cần nguồn điện để hoạt động, được gọi là Phantom power.

MEMS – Micrô của hệ thống vi cơ điện tử hoặc MEMS là micrô trên một con chip. Chúng có một màng ngăn nhạy với áp suất được khắc trên một chip silicon và hoạt động tương tự như một micrô tụ điện. Những micrô này rất nhỏ và được tích hợp vào mạch điện.

Trong hình trên, con chip có nhãn LEFT là một micrô MEMS, với một màng chắn cực nhỏ, chiều rộng chưa đến một mm.

Âm thanh kỹ thuật số

Âm thanh là một tín hiệu tương tự mang thông tin rất chi tiết. Để chuyển đổi tín hiệu này sang tín hiệu kỹ thuật số, âm thanh cần được lấy mẫu hàng nghìn lần một giây.

Lấy mẫu là chuyển đổi tín hiệu âm thanh thành giá trị số mà nó đại diện cho tín hiệu tại thời điểm đó.

Âm thanh kỹ thuật số được lấy mẫu bằng cách sử dụng Điều chế mã xung (Pulse Code Modulation- PCM). PCM liên quan đến việc đọc điện áp của tín hiệu và chọn giá trị rời rạc gần nhất với điện áp đó bằng cách sử dụng giá trị xác định.

Có thể coi PCM là phiên bản cảm biến của điều chế độ rộng xung, hoặc PWM. PCM liên quan đến việc chuyển đổi tín hiệu tương tự sang tín hiệu số, PWM liên quan đến việc chuyển đổi tín hiệu số sang tương tự.

Ví dụ: hầu hết các dịch vụ phát nhạc trực tuyến đều cung cấp âm thanh 16 bit hoặc 24 bit. Chúng chuyển đổi điện áp thành một giá trị phù hợp với số nguyên 16 bit hoặc 24 bit. Âm thanh 16 bit tương ứng với giá trị từ -32,768 đến 32,767, 24 bit tương ứng với giá trị nằm trong khoảng -8,388,608 đến 8,388,607. Càng nhiều bit, mẫu càng gần với những gì tai chúng ta nghe được.

Có thể gặp khó khăn khi nghe với âm thanh 8 bit, thường gọi là LoFi. Đây là âm thanh được lấy mẫu chỉ sử dụng 8 bit, từ -128 đến 127. Âm thanh máy tính đầu tiên bị giới hạn ở 8 bit do giới hạn phần cứng, vì vậy nó thường thấy trong trò chơi cổ điển.

Các mẫu này được lấy mẫu nhiều nghìn lần mỗi giây, sử dụng tốc độ lấy mẫu được xác định rõ được đo bằng KHz. Các dịch vụ phát nhạc trực tuyến sử dụng 48KHz cho hầu hết âm thanh, nhưng một số âm thanh ‘lossless’ dùng tần số lên đến 96KHz, thậm chí 192KHz. Tốc độ lấy mẫu càng cao, âm thanh càng gần với bản gốc. Đã từng có cuộc tranh luận liệu con người có thể nhận ra sự khác biệt trên 48KHz hay không.

Dữ liệu âm thanh có nhiều định dạng khác nhau như mp3, WAV, …. Với mp3, dữ liệu âm thanh được nén để giảm dung lượng mà không làm giảm chất lượng. Âm thanh không nén thường được lưu trữ dưới dạng tệp WAV – đây là File có 44 byte thông tin tiêu đề, tiếp theo là dữ liệu âm thanh thô. Tiêu đề chứa thông tin như tốc độ lấy mẫu (ví dụ: 16000 cho 16KHz) và kích thước mẫu (16 cho 16 bit) và số lượng kênh.

Kênh đề cập đến số lượng luồng âm thanh khác nhau tạo nên âm thanh. Ví dụ: đối với âm thanh nổi có trái và phải, sẽ có 2 kênh. Đối với âm thanh vòm 7.1 cho hệ thống rạp hát gia đình, con số này sẽ là 8.

Kích thước dữ liệu âm thanh

Dữ liệu âm thanh tương đối lớn. Ví dụ: ghi lại âm thanh 16 bit không nén ở 16KHz (tốc độ đủ tốt để sử dụng với mô hình chuyển giọng nói thành văn bản), sẽ mất 32KB dữ liệu cho mỗi giây âm thanh:

16-bit nghĩa là 2 byte cho mỗi mẫu (1 byte là 8 bit).

16KHz là 16.000 mẫu mỗi giây.

16.000 x 2 byte = 32.000 byte mỗi giây.

Điều này nghe có vẻ như là một lượng nhỏ dữ liệu, nhưng nếu sử dụng một bộ vi điều khiển có bộ nhớ hạn chế thì đây là con số đáng kể. Ví dụ: Sử dụng Wio Terminal có bộ nhớ 192KB để lưu mã chương trình và các biến. Ngay cả khi mã chương trình rất nhỏ thì cũng không thể ghi lại quá 5 giây âm thanh.

Bộ vi điều khiển có thể truy cập bộ nhớ bổ sung như thẻ SD hoặc bộ nhớ flash. Khi thiết lập một thiết bị IoT ghi lại âm thanh, người dùng không chỉ cần thêm bộ nhớ mà mã phải ghi âm thanh thu được từ micrô trực tiếp vào bộ nhớ đó và khi gửi lên đám mây thì phải truyền trực tuyến từ bộ nhớ lên web yêu cầu. Bằng cách đó, có thể tránh được việc hết bộ nhớ bằng cách cố gắng giữ toàn bộ khối dữ liệu âm thanh trong bộ nhớ cùng một lúc.

2. Cách ghi âm thanh từ thiết bị IoT

Thiết bị IoT được kết nối với micrô để thu âm thanh, sẵn sàng chuyển đổi thành văn bản. Nó cũng có thể kết nối với loa để xuất âm thanh. Phần tiếp theo sẽ trình bày cách thiết lập loa để kiểm tra micrô.

* Cách định cấu hình micrô và loa

Làm theo hướng dẫn để định cấu hình micrô và loa cho thiết bị IoT:

Arduino – Wio Terminal

Máy tính một bo mạch – Raspberry Pi

Máy tính một bo mạch – Thiết bị ảo

* Cách ghi lại âm thanh

Làm theo hướng dẫn dưới đây để thu âm thanh trên thiết bị IoT:

Arduino – Wio Terminal

Máy tính một bo mạch – Raspberry Pi

 Máy tính một bo mạch- Thiết bị ảo

3. Chuyển lời nói thành văn bản

Chuyển lời nói thành văn bản, hoặc nhận dạng giọng nói, liên quan đến việc sử dụng AI để chuyển đổi các từ trong tín hiệu âm thanh thành văn bản.

Các mô hình nhận dạng giọng nói

Để chuyển lời nói thành văn bản, các mẫu từ tín hiệu âm thanh được nhóm lại với nhau và đưa vào mô hình học máy dựa trên mạng Neural hồi quy (RNN). Đây là loại mô hình học máy sử dụng dữ liệu trước đó để đưa ra quyết định về dữ liệu đến. Ví dụ: RNN có thể phát hiện một khối mẫu âm thanh là âm thanh ‘Hel’ và khi nó nhận được một khối mẫu âm thanh khác mà nó cho là âm thanh ‘lo’, nó có thể kết hợp khối này với âm thanh trước đó, nhận thấy rằng ‘Xin chào’ là từ hợp lệ và chọn đó làm kết quả.

Các mô hình ML luôn chấp nhận dữ liệu có cùng kích thước mọi lúc. Bộ phân loại hình ảnh đã xây dựng trong bài viết trước sẽ thay đổi kích thước hình ảnh thành kích thước cố định và xử lý chúng. Tương tự với các mô hình giọng nói, chúng phải xử lý các khối âm thanh có kích thước cố định. Các mô hình lời nói cần có khả năng kết hợp các đầu ra của nhiều dự đoán để có câu trả lời, cho phép nó phân biệt giữa ‘Hi’ và ‘Highway’, hoặc ‘flock’  và ‘floccinaucinihilipilization’.

Các mô hình giọng nói cũng đủ tiên tiến để hiểu ngữ cảnh và có thể sửa các từ mà chúng phát hiện được khi xử lý nhiều âm thanh hơn sao cho phù hợp. Ví dụ: nếu bạn nói “I went to the shops to get two bananas and an apple too” bạn sẽ sử dụng ba từ nghe giống nhau nhưng được viết khác nhau:  to, two too.

Một số dịch vụ giọng nói cho phép tùy chỉnh để hoạt động tốt hơn trong môi trường ồn ào như nhà máy hoặc với các từ chuyên ngành như tên hóa học. Các tùy chỉnh này được đào tạo bằng cách cung cấp âm thanh mẫu và bản sao, đồng thời hoạt động sử dụng phương pháp học truyền tải (transfer learning), giống như cách đào tạo bộ phân loại hình ảnh chỉ sử dụng một vài hình ảnh trong bài viết trước.

Sự bảo mật

Khi sử dụng giọng nói để nhắn tin trong thiết bị IoT, quyền riêng tư là vô cùng quan trọng. Các thiết bị này nghe âm thanh liên tục, vì vậy với tư cách là người tiêu dùng, bạn không muốn mọi thứ bạn nói được gửi lên đám mây và chuyển đổi thành văn bản. Điều này không chỉ sử dụng nhiều băng thông Internet mà còn ảnh hưởng đến quyền riêng tư, đặc biệt là khi một số nhà sản xuất thiết bị thông minh chọn ngẫu nhiên âm thanh cho con người để xác thực với văn bản tạo ra nhằm giúp cải thiện mô hình của họ.

Bạn chỉ muốn thiết bị thông minh của mình gửi âm thanh tới đám mây để xử lý khi bạn đang sử dụng nó, chứ không phải bất cứ khi nào thiết bị nghe thấy âm thanh trong nhà vì âm thanh có thể bao gồm các cuộc họp riêng tư hoặc tương tác thân mật. Cách hầu hết các thiết bị thông minh hoạt động là với một wake word, một cụm từ chính như “Alexa”, “Hey Siri” hoặc “OK Google” khiến thiết bị ‘thức dậy’ và lắng nghe những gì bạn đang nói cho đến khi nó phát hiện ngắt quãng trong lời nói cho biết bạn đã tương tác xong với thiết bị.

 Việc phát hiện wake word còn được gọi là Keyword spotting or Keyword recognition

Các wake word này được phát hiện trên thiết bị, không phải trên đám mây. Các thiết bị thông minh có các mô hình AI nhỏ chạy trên thiết bị có chức năng lắng nghe hoạt động của đánh thức và khi nó được phát hiện thì bắt đầu truyền âm thanh lên đám mây để nhận dạng. Những mô hình này rất chuyên biệt, và chỉ cần lắng nghe từ wake word.

Một số công ty công nghệ đang bổ sung nhiều quyền bảo mật hơn cho thiết bị của họ và thực hiện một số chuyển đổi giọng nói thành văn bản trên thiết bị. Apple đã thông báo rằng là một phần của bản cập nhật iOS và macOS năm 2021, họ sẽ hỗ trợ chuyển đổi giọng nói thành văn bản trên thiết bị và có thể xử lý nhiều yêu cầu mà không cần sử dụng đám mây. Điều này là nhờ có bộ vi xử lý mạnh mẽ trong thiết bị có thể chạy các mô hình ML.

Việc phát hiện wake word thường sử dụng kỹ thuật TinyML, là chuyển đổi mô hình ML để chạy trên vi điều khiển. Các mô hình này có kích thước nhỏ và tiêu thụ rất ít điện năng để hoạt động.

Để tránh sự phức tạp của việc đào tạo và sử dụng mô hình đánh thức, bộ hẹn giờ thông minh đang xây dựng trong bài viết này sẽ sử dụng một nút để bật nhận dạng giọng nói.

Nếu bạn muốn thử tạo mô hình phát hiện từ đánh thức để chạy trên Wio Terminal hoặc Raspberry Pi, hãy xem tại hướng dẫn bằng giọng nói bởi Edge Impulse. Nếu sử dụng máy tính để tham khảo tài liệu, bạn có thể thử bắt đầu với  Custom Keyword quickstart on the Microsoft docs.

4. Cách chuyển lời nói thành văn bản

Cũng giống như phân loại hình ảnh trong một project trước đó, có các dịch vụ AI được xây dựng sẵn thu lời nói dưới dạng file âm thanh và chuyển đổi thành văn bản. Đó là dịch vụ lời nói, một phần của Các dịch vụ nhận thức (Cognitive Services), các dịch vụ AI được tạo sẵn để sử dụng trong ứng dụng của người dùng.

* Cách định cấu hình tài nguyên AI giọng nói

1. Tạo Resource Group cho project với tên là smart-timer

2. Sử dụng lệnh sau để tạo tài nguyên giọng nói tự do:

az cognitiveservices account create --name smart-timer \
                                    --resource-group smart-timer \
                                    --kind SpeechServices \
                                    --sku F0 \
                                    --yes \
                                    --location <location>

Thay thế <location> bằng vị trí đã sử dụng khi tạo Resource Group

3. Cần khóa API để truy cập tài nguyên giọng nói từ mã của mình. Chạy lệnh sau để lấy khóa:

az cognitiveservices account keys list --name smart-timer \
                                       --resource-group smart-timer \
                                       --output table

Sao chép một trong các chìa khóa

* Cách chuyển lời nói thành văn bản

Làm theo hướng dẫn để chuyển lời nói thành văn bản trên thiết bị IoT:

Arduino – Wio Terminal

Single-board computer – Raspberry Pi

Single-board computer – Virtual device

Biên dịch: Bắc Đặng

Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com

0 0 Phiếu bầu
Article Rating
Subscribe
Notify of
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các bình luận