Mục lục:

Trình nhận dạng giọng nói: 12 bước
Trình nhận dạng giọng nói: 12 bước

Video: Trình nhận dạng giọng nói: 12 bước

Video: Trình nhận dạng giọng nói: 12 bước
Video: Bài 12. Trợ lý ảo trên Python - Nhận diện giọng nói (Lập trình Python cơ bản - TDF) 2024, Tháng bảy
Anonim
Trình nhận dạng giọng nói
Trình nhận dạng giọng nói

Chào mọi người………

Đây là hướng dẫn thứ hai của tôi mà tôi đang đăng

Vì vậy, chào mừng tất cả….

Trong Tài liệu hướng dẫn này, tôi sẽ dạy bạn về cách xây dựng bộ nhận dạng giọng nói bằng cách sử dụng bảng arduino.

Vì vậy, tôi nghĩ rằng bạn đã có kinh nghiệm với bo mạch arduino trước đây, nếu không, nó không phải là một vấn đề lớn ở đây, nhưng tôi khuyên bạn nên làm quen với nó vì nó rất thú vị khi chơi với nó và tạo ra một số dự án thú vị ra khỏi nó tùy theo sự sáng tạo và kiến thức của bạn về nó.

Vì vậy, đối với những người chưa có kinh nghiệm sử dụng arduino trước đây:

Arduino là một phần cứng máy tính mã nguồn mở được sản xuất bởi một công ty có cộng đồng lớn các nhà thiết kế và nhà sản xuất. Nó có thể được coi như một máy tính nhỏ có thể được sử dụng để điều khiển các mạch điện tử khác

Arduino được lập trình trong môi trường do chính họ phát triển có thể dễ dàng tải xuống từ trang web của họ

Bước 1: Làm thế nào để thiết lập môi trường?

Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?
Làm thế nào để thiết lập môi trường?

Chỉ cần tìm kiếm trong google "tải về arduino"

Nhấp vào "Arduino - Phần mềm"

Bạn sẽ có thể thấy "Tải xuống Arduino IDE"

Chọn tùy thuộc vào hệ điều hành của bạn

Tải xuống và cài đặt nó

Như vậy là bạn đã cài đặt thành công phần mềm và bạn có thể viết mã của mình cho arduino và với sự trợ giúp của dây cáp, bạn có thể kết nối bo mạch arduino với máy tính và có thể chèn mã.

Bước 2: Tại sao nhu cầu về Arduino lại tăng lên?

Không tốn kém

Bo mạch Arduino không đắt so với các nền tảng vi điều khiển khác. Nó sẽ có giá chỉ khoảng 50 đô la.

Đa nền tảng

Phần mềm cho Arduino hoạt động trên hệ điều hành Windows, Macintosh OS và Linux. Nếu chúng ta nghĩ về các hệ thống vi điều khiển khác, nó sẽ chỉ hoạt động trong Windows hay nói cách khác là chỉ giới hạn trong Windows.

Phần mềm nguồn mở và có thể mở rộng

Phần mềm này là mã nguồn mở, vì vậy mọi người bắt đầu nghiên cứu sâu về nó và bao gồm các thư viện (bao gồm một tập hợp các chức năng cho hoạt động của nó) của các ngôn ngữ lập trình khác.

Môi trường lập trình đơn giản và dễ dàng

Thật dễ dàng để sử dụng Arduino IDE (phần mềm mà chúng ta đã thảo luận về….) Cho những người kể cả người mới bắt đầu, vì một lượng lớn tài nguyên được cung cấp bởi chính Arduino có sẵn trên internet miễn phí. về nó.

Nguồn mở và phần cứng có thể mở rộng

Các kế hoạch của bảng Arduino được xuất bản theo giấy phép Creative Commons, vì vậy những người có kinh nghiệm thiết kế mạch có thể tạo phiên bản mô-đun của riêng họ, họ cũng có quyền mở rộng công nghệ và có thể cải thiện bằng cách thêm các tính năng cho nó.

Bước 3: Hãy để chúng tôi bắt đầu !!!!!

Vì vậy, tôi đã nói rằng dự án này chủ yếu tập trung vào nhận dạng giọng nói bằng cách sử dụng Arduino và cho phép nó thực hiện một số tác vụ.

Nói rõ hơn …….

Nó thu nhận các tín hiệu âm thanh do người dùng cung cấp, có thể được phát hiện bằng cách nhấp nháy của đèn LED sau đó được chuyển đổi thành giọng nói tổng hợp.

Bước 4: Các thành phần cần thiết

Thành phần bắt buộc
Thành phần bắt buộc
Thành phần bắt buộc
Thành phần bắt buộc
Thành phần bắt buộc
Thành phần bắt buộc

Các thành phần chính cần thiết cho dự án này là:

Arduino Do x 1

Spark Fun Electret Microphone Breakout x 1

Spark Fun Mono Audio Amp Breakout x 1

Loa: 0,25W, 8 ôm x 1

Bảng mạch x 1

5 mm LED: Đỏ x 3

Điện trở 330 ohm x 3

Dây nhảy x 1

Sắt hàn x 1

Máy chủ BitVoicer

Nó là một máy chủ tổng hợp và nhận dạng giọng nói để tự động hóa giọng nói.

Bước 5: Làm thế nào nó thực sự hoạt động?

1. Các sóng âm thanh đang được tìm ra sau đó nó bắt các sóng này và được khuếch đại bởi bảng Sparkfun Electret Breakout.

2. Tín hiệu khuếch đại thu được từ quá trình trên sẽ được số hóa và lưu vào bộ đệm / lưu trữ trong bảng Arduino bằng cách sử dụng bộ chuyển đổi tương tự sang kỹ thuật số (ADC) có trong đó.

3. Các mẫu âm thanh sẽ được cung cấp cho Máy chủ BitVoicer bằng cách sử dụng cổng nối tiếp Arduino hiện có.

4. BitVoicer Server sẽ xử lý luồng âm thanh và sau đó nó nhận dạng bài phát biểu trong đó.

5. Bài phát biểu được nhận dạng sẽ được ánh xạ tới các lệnh đã được định nghĩa bởi chính nó trước đó, sau đó nó sẽ được gửi trở lại Arduino. Nếu một trong các lệnh bao gồm tổng hợp giọng nói, Máy chủ BitVoicer sẽ chuẩn bị luồng âm thanh và gửi đến Arduino.

6. Arduino sẽ xác định các lệnh được cung cấp và thực hiện hành động thích hợp nhất định. Nếu nhận được luồng âm thanh, luồng âm thanh đó sẽ được xếp hàng đợi vào lớp Loa BVS và được phát bằng DUE DAC và DMA.

7. Bộ khuếch đại âm thanh Mono SparkFun sẽ khuếch đại tín hiệu DAC để nó có thể điều khiển loa 8 Ohm và có thể nghe được qua loa.

Bước 6: Nối dây các thành phần

Nối dây các thành phần
Nối dây các thành phần
Nối dây các thành phần
Nối dây các thành phần

Bước đầu tiên là đấu dây các thành phần khác nhau trong breadboard và cả với board arduino như trong hình

Hãy nhớ rằng bo mạch arduino được sử dụng ở đây là DUE, có nhiều mẫu khác khác nhau đã được sản xuất bởi Arduino, mỗi loại hoạt động ở các mức điện áp khác nhau

Hầu hết các bảng Arduino hoạt động ở 5 V, nhưng DUE chạy ở 3,3 V

DUE đã sử dụng một tham chiếu tương tự 3,3 V nên bạn không cần một bộ nối vào chân AREF

Rất tiếc, tôi đã quên nói một chân AREF là "PIN THAM KHẢO ANALOG" có trong bảng arduino như trong hình tiếp theo (Đây là một arduino UNO nhưng nó tương tự trong trang web tương tự trong trường hợp DUE)

Chân AREF trên DUE được kết nối với bộ điều khiển vi mô thông qua một cầu điện trở

Để sử dụng chân AREF, điện trở R1 phải được khử hàn khỏi PCB [Bảng mạch in]

Bước 7: Cung cấp mã cho bảng Arduino

Cung cấp mã cho bảng Arduino
Cung cấp mã cho bảng Arduino

Vì vậy, chúng tôi phải tải mã lên Bảng Arduino để nó có thể hoạt động tùy thuộc vào hướng dẫn được cung cấp trong mã.

Rất dễ dàng để làm điều này, tôi sẽ giải thích chi tiết từng người trong số họ, về những gì họ làm và cách họ hoạt động.

Làm thế nào để cài đặt một thư viện?

Vì vậy, trước đó chúng ta phải biết cách cài đặt các thư viện BitVoicer Server vào Arduino IDE,. Tức là vào phần mềm arduino.

Vì vậy, để mở Arduino IDE

Trên bảng điều khiển trên cùng, nhấp vào "Phác thảo"

Sau đó nhấp vào "Bao gồm Thư viện"

Trên đó nhấp vào "Quản lý Thư viện"

Sau đó, trình quản lý thư viện sẽ mở ra và chúng ta có thể thấy danh sách các thư viện đã sẵn sàng để cài đặt hoặc những thư viện đã được cài đặt

Tìm kiếm thư viện để cài đặt và sau đó chọn số phiên bản

Ở đây chúng tôi đang cài đặt các thư viện BitVoicer Server, cần thiết cho dự án này

Cách nhập thư viện.zip?

Thư viện cũng có thể được phân phối dưới dạng tệp ZIP hoặc thư mục

Tên của thư mục là tên của thư viện

Bên trong thư mục sẽ là tệp.cpp, tệp.h và thường là tệp keywords.txt, thư mục ví dụ và các tệp khác theo yêu cầu của thư viện

Từ phiên bản 1.0.5 của Arduino IDE, bạn có thể cài đặt các thư viện của bên thứ 3 bên trong nó

Không giải nén thư viện đã tải xuống, hãy để nguyên

Để làm điều đó, hãy chuyển đến sketch> Bao gồm Thư viện> Thêm Thư viện.zip

Chọn vị trí của tệp.zip và mở nó.

Quay lại menu Sketch> Import Library.

Nếu nó được nhập đúng cách thì thư viện đó sẽ được nhìn thấy ở cuối trình đơn thả xuống khi bạn điều hướng.

Bước 8: Chương trình / Phác thảo

Đây là chương trình phải được tải lên trong Arduino.

Nó có thể được thực hiện đơn giản bằng cách kết nối Bảng Arduino với máy tính và tải nó lên bảng.

Bước 9: Điều gì về các mã được viết?

Bây giờ chúng ta hãy xem mỗi hàm được viết trong mã thực sự làm gì ………..

Tham chiếu thư viện và khai báo biến

Trước khi nói về điều này, chúng ta phải biết và hiểu một số thuật ngữ cơ bản, bao gồm:

  • BVSP

    Nó là một thư viện cung cấp cho chúng ta hầu hết mọi tài nguyên cần thiết để trao đổi thông tin với Máy chủ BitVoicer

    Có một giao thức được gọi là Giao thức máy chủ BitVoicer được triển khai thông qua lớp BVSP. Điều này là bắt buộc để tương tác với máy chủ

  • BVSMic

    Nó là một thư viện thực hiện tất cả những thứ cần thiết để ghi lại âm thanh bằng Bộ chuyển đổi Analog-to-Digital (ADC) của Arduino

    Âm thanh này được lưu trữ trong bộ đệm nội bộ của lớp và chúng có thể được truy xuất và sau đó nó có thể được gửi đến các công cụ nhận dạng giọng nói có sẵn trên Máy chủ BitVoicer

  • BVSSpeaker

    Nó là một thư viện chứa tất cả các tài nguyên cần thiết để tái tạo các luồng âm thanh được gửi từ Máy chủ BitVoicer

    Để làm được điều đó, bo mạch Arduino phải có Bộ chuyển đổi tín hiệu số sang tương tự (DAC) được tích hợp sẵn

    Arduino DUE là bo mạch Arduino duy nhất có DAC tích hợp

Các thư viện BVSP, BVSMic, BVSSpeaker và DAC, tham chiếu đến các thư viện này được viết trên bốn dòng đầu tiên tạo nên nội dung chính của chương trình

Khi cài đặt BitVoicer Server, bạn có thể tìm thấy BitSophia cung cấp tất cả bốn thư viện này

Khi người dùng thêm một tham chiếu vào thư viện BVSSpeaker, thư viện DAC đã được đề cập trước đó sẽ tự động được gọi

Lớp BVSP được sử dụng để giao tiếp với Máy chủ BitVoicer

Lớp BVSMic được sử dụng để thu và lưu trữ âm thanh

Lớp BVSSpeaker được sử dụng để tái tạo âm thanh bằng Arduino DUE DAC

2. chức năng thiết lập

Chức năng thiết lập được sử dụng để thực hiện các hành động nhất định như:

Để đặt chế độ ghim và trạng thái ban đầu của chúng

Để khởi tạo giao tiếp nối tiếp

Để khởi tạo lớp BVSP

Khởi tạo lớp BVSMic

Khởi tạo lớp BVSSpeaker

Nó cũng đặt “trình xử lý sự kiện” (con trỏ hàm) cho các sự kiện frameReceive, modeChanged và streamReceive của lớp BVSP

Bước 10: Chức năng lặp lại

Nó thực hiện năm hoạt động chính:

1. hàm keepAlive ()

Chức năng này là để yêu cầu máy chủ về thông tin trạng thái.

2. hàm nhận ()

Chức năng này dùng để kiểm tra xem máy chủ có gửi dữ liệu đi hay không, nếu máy chủ gửi dữ liệu nào thì nó sẽ xử lý.

3. Các hàm isSREAvailable (), startRecording (), stopRecording () và sendStream ()

Các chức năng này được sử dụng để kiểm soát các cài đặt khác nhau về việc ghi âm thanh và sau khi đạt được âm thanh, nó sẽ gửi âm thanh này đến Máy chủ BitVoicer.

4. hàm play ()

Chức năng này được sử dụng để phát âm thanh được xếp hàng đợi ở lớp BVSSpeaker.

5. playNextLEDNote ()

Chức năng này được sử dụng để điều khiển Led nhấp nháy như thế nào.

6. Hàm BVSP_frameReceive

Hàm này được gọi mỗi khi hàm nhận () bắt đầu xác định rằng một khung hoàn chỉnh đã được nhận. Ở đây chúng tôi đang chạy các lệnh nhận được từ Máy chủ BitVoicer. Các lệnh điều khiển sự nhấp nháy của đèn LED có kích thước 2 Byte. Trong byte đầu tiên đó chỉ ra chân và byte thứ hai chỉ ra giá trị chân. Ở đây chúng ta đang sử dụng hàm analogWrite () để đặt giá trị thích hợp cho chân. Tại thời điểm đó, chúng ta cũng phải kiểm tra xem lệnh playLEDNotes, thuộc loại Byte, đã được nhận hay chưa. Nếu nó đã được nhận, tôi đặt playLEDNotes thành true và nó sẽ theo dõi và đánh dấu thời gian hiện tại. Thời gian này sẽ được sử dụng bởi chức năng playNextLEDNote để đồng bộ hóa các đèn LED với bài hát.

7. Hàm BVSP_modeChanged

Hàm này được gọi mỗi khi hàm nhận () xác định một sự thay đổi trong chế độ theo hướng gửi đi (Server Arduino). Máy chủ BitVoicer có thể gửi dữ liệu được đóng khung hoặc âm thanh tới Arduino. Trước khi giao tiếp chuyển từ chế độ này sang chế độ khác, Máy chủ BitVoicer sẽ gửi một tín hiệu. Lớp BVSP xác định tín hiệu này và tăng hoặc gắn cờ sự kiện modeChanged. Trong chức năng BVSP_modeChanged, nếu người dùng phát hiện giao tiếp đang chuyển từ chế độ phát trực tiếp sang chế độ có khung, họ sẽ biết âm thanh đã kết thúc để người dùng có thể yêu cầu lớp BVSSpeaker ngừng phát âm thanh.

8. Hàm BVSP_streamReceive

Hàm này được gọi mỗi khi hàm nhận () xác định rằng các mẫu âm thanh đã được nhận. Nó chỉ đơn giản là lấy âm thanh và xếp chúng vào lớp BVSSpeaker để hàm play () có thể tái tạo chúng.

9. hàm playNextLEDNote

Hàm này chỉ chạy nếu hàm BVSP_frameReceive xác định lệnh playLEDNotes. Nó điều khiển và đồng bộ hóa các đèn LED với âm thanh được gửi từ Máy chủ BitVoicer. Để đồng bộ hóa đèn LED với âm thanh và biết thời gian chính xác, có thể sử dụng phần mềm miễn phí Sonic Visualizer. Nó cho phép chúng tôi xem các sóng âm thanh để người đó có thể biết khi nào một phím đàn piano được nhấn.

Bước 11: Làm thế nào để nhập các đối tượng giải pháp máy chủ BitVoicer?

Bây giờ chúng tôi đã thiết lập Máy chủ BitVoicer nâng cấp để hoạt động với Arduino.

Có bốn đối tượng giải pháp chính cho Máy chủ BitVoicer: Vị trí, Thiết bị, Dữ liệu nhị phân và Lược đồ thoại.

Hãy để chúng tôi xem xét những điều này một cách chi tiết:

Địa điểm

Nó đại diện cho vị trí thực tế mà thiết bị đang được cài đặt.

Chúng ta có thể tạo một vị trí có tên là Nhà riêng.

Thiết bị

Chúng được coi là khách hàng của BitVoicer Server.

Giống như việc tạo một vị trí, chúng ta có thể tạo một thiết bị Hỗn hợp, để thuận tiện, chúng ta hãy đặt tên nó là ArduinoDUE.

Đôi khi một số lỗi tràn bộ đệm có thể xảy ra vì vậy để loại bỏ nó, tôi đã phải giới hạn Tốc độ dữ liệu trong cài đặt giao tiếp ở mức 8000 mẫu mỗi giây.

BinaryData là một loại lệnh mà Máy chủ BitVoicer có thể gửi đến các thiết bị khách. Chúng thực sự là các mảng byte mà bạn có thể liên kết đến các lệnh.

Khi BitVoicer Server nhận dạng lời nói liên quan đến lệnh đó, nó sẽ gửi mảng byte đến thiết bị đích.

Vì vậy, vì lý do đó, tôi đã tạo một đối tượng BinaryData cho mỗi giá trị pin và đặt tên chúng là ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff, v.v.

Vì vậy, tôi đã phải tạo 18 đối tượng BinaryData, vì vậy tôi khuyên bạn nên tải xuống và nhập các đối tượng từ tệp VoiceSchema.sof được cung cấp bên dưới.

Vậy Lược đồ giọng nói là gì?

Lược đồ giọng nói là nơi mọi thứ kết hợp với nhau. vai trò chính của chúng là xác định cách nhận dạng các câu và những gì tất cả các lệnh cần được chạy.

Đối với mỗi câu, bạn có thể xác định bao nhiêu lệnh tùy thích và thứ tự chúng sẽ được thực hiện.

Bạn cũng có thể xác định độ trễ giữa mỗi lệnh được cung cấp.

BitVoicer Server chỉ hỗ trợ âm thanh 8-bit mono PCM (8000 mẫu mỗi giây) vì vậy sẽ có nhu cầu chuyển đổi tệp âm thanh sang định dạng này, có rất nhiều phí chuyển đổi trực tuyến hiện nay và tôi khuyên bạn nên https://audio.online -convert.com/convert-to-wav.

Bạn có thể nhập (Nhập đối tượng giải pháp) tất cả các đối tượng giải pháp mà tôi đã sử dụng trong dự án này từ các tệp bên dưới.

Một trong số chúng chứa Thiết bị DUE và thiết bị kia chứa Lược đồ giọng nói và các lệnh của nó.

Bước 12: Kết luận

Của bạn đây !!!!

Bạn đã thực hiện một dự án tuyệt vời và bạn có thể nói chuyện với nó

Vì vậy, bắt đầu nói chuyện ……………….

Bạn có thể nhấp nháy đèn LED và đồng thời bạn có thể nói nó hát một bài hát nếu nó cần, mã của nó đã được cung cấp

Vậy là tôi đã hoàn thành Bài hướng dẫn thứ hai của mình !!!!!!!!!

Vâng……

Tôi nghĩ mọi người đã hiểu điều đó….

Nếu bất kỳ ai có bất kỳ câu hỏi xin vui lòng hỏi tôi

Tôi sẽ đưa ra một bài giảng xuất sắc vào lần sau….

Từ biệt…

Hẹn sớm gặp lại……………

Đề xuất: