Phương pháp điều khiển thiết bị bằng tiếng nói

Bài báo trình bày phương pháp nhận dạng tiếng nói tiếng Việt cho việc điều khiển thiết bị trong ngôi nhà thông minh. Thực hiện trên máy tính nhỏ nhằm tăng khả năng triển khai của hệ thống. Việc nhận dạng sử dụng CMU Sphinx, quá trình huấn luyện các từ điều khiển “Robot”, “Đèn”, “Quạt”,… Hệ thống sử dụng Raspberry Pi và dùng chip Atmega 328 làm bộ xử lý trung tâm (MCU-Micro Control Unit) để truyền, nhận tín hiệu và điều khiển thiết bị. Mặc dù phương pháp điều khiển thiết bị đã có rất nhiều như: smart phone, máy tính để bàn, laptop kết hợp với công nghệ khác, nhưng dùng tiếng nói để điều khiển thiết bị còn nhiều khía cạnh cần giải quyết. Phương pháp mà bài báo đưa ra tối ưu và triển khai dễ dàng hơn. Chi phí cho hệ thống được giảm đáng kể. Tuy nhiên vẫn còn một số hạn chế gặp phải chưa giải quyết được: xử lý nhiễu (noise), quá trình huấn luyện.

pdf6 trang | Chia sẻ: candy98 | Lượt xem: 822 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Phương pháp điều khiển thiết bị bằng tiếng nói, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Kỷ yếu Hội nghị Quốc gia lần thứ VIII về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR); Hà Nội, ngày 9-10/7/2015 DOI: 10.15625/vap.2015.000196 PHƯƠNG PHÁP ĐIỀU KHIỂN THIẾT BỊ BẰNG TIẾNG NÓI Đỗ Văn Minh, Nguyễn Minh Sơn, Phan Thiện Phước Khoa Công nghệ thông tin, Trường Đại học Lạc Hồng minhit99@gmail.com, phanphuoc93pp@gmail.com, nmson@lhu.edu.vn TÓM TẮT - Bài báo trình bày phương pháp nhận dạng tiếng nói tiếng Việt cho việc điều khiển thiết bị trong ngôi nhà thông minh. Thực hiện trên máy tính nhỏ nhằm tăng khả năng triển khai của hệ thống. Việc nhận dạng sử dụng CMU Sphinx, quá trình huấn luyện các từ điều khiển “Robot”, “Đèn”, “Quạt”, Hệ thống sử dụng Raspberry Pi và dùng chip Atmega 328 làm bộ xử lý trung tâm (MCU-Micro Control Unit) để truyền, nhận tín hiệu và điều khiển thiết bị. Mặc dù phương pháp điều khiển thiết bị đã có rất nhiều như: smart phone, máy tính để bàn, laptop kết hợp với công nghệ khác, nhưng dùng tiếng nói để điều khiển thiết bị còn nhiều khía cạnh cần giải quyết. Phương pháp mà bài báo đưa ra tối ưu và triển khai dễ dàng hơn. Chi phí cho hệ thống được giảm đáng kể. Tuy nhiên vẫn còn một số hạn chế gặp phải chưa giải quyết được: xử lý nhiễu (noise), quá trình huấn luyện. Từ khóa - CMU Sphinx, Raspberry Pi, GPIO, Arduino. I. PHẦN MỞ ĐẦU Công nghệ ngày càng phát triển, trong thời đại công nghệ thông tin, các chương trình giao tiếp người dùng ngày càng đòi hỏi sự thân thiện và hiệu năng mạnh mẽ. Có nhiều cách để con người giao tiếp với máy tính trong đó có giao tiếp bằng tiếng nói. Nhu cầu giao tiếp với thiết bị máy bằng tiếng nói trở nên cần thiết, đó là phương thức giao tiếp thông minh và tự nhiên nhất. Trong những năm gần đây, công nghệ này đã có mặt trên rất nhiều thiết bị và chủng loại, từ máy tính đến điện thoại di động, đồ chơi công nghệ và các thiết bị nhúng khác, các thiết bị ngày càng trở nên nhỏ hơn về kích thước [1]. Tuy nhiên các thiết bị càng nhỏ cũng làm giới hạn về chức năng. Tiếng nói có khả năng điều khiển và tương tác phức tạp với hệ thống nhúng [2]. Nhận diện tiếng nói được phân loại như nhận diện các từ đã được nối với với nhau và nhận biết từng từ một cách độc lập. Đối với hệ thống nhúng thì sử dụng nhận diện từng từ độc lập với nhau có hiệu quả hơn cả. Thông thường, nhận dạng tiếng nói là một loại mẫu nhận dạng dựa trên huấn luyện và nhận dạng [1]. Phương pháp sử dụng là HMM (Hidden Markov Model) và thư viện sử dụng là bộ nhận dạng HTK. Tín hiệu tiếng nói người dùng được lấy bởi micro USB đã được kết nối với hệ thống. Để xử lý tín hiệu nhận dạng bài báo sử dụng bộ thư viện nhận dạng tiếng nói CMU Sphinx nhận dạng các câu lệnh điều khiển thiết bị bằng tiếng Việt. Chương trình điều khiển được viết bằng ngôn ngữ Python và được biên dịch trên máy tính nhúng Raspberry Pi để điều khiển các thiết bị đèn, quạt, tivi trực tiếp qua hàng chân GPIO (General Purpose Input/ Output) trên Raspberry Pi. Sau khi chuỗi tín hiệu các từ được nhận diện. Các từ đã được nhận dạng chuyển thành dạng văn bản sẽ truyền đến Ardunio sử dụng bộ phát/thu sóng vô tuyến RF SI4463. Tại Arduino sẽ thực thi lệnh để điều khiển các thiết bị điện. Bài báo này giải quyết từng bước cơ bản trong mô hình Markov ẩn, mà một số đề tài trước còn bị giới hạn [1]. Bài báo có sử dụng công cụ Sphinx. Sphinx là một nền tảng mã nguồn mở, đang được rất nhiều chuyên gia sử dụng làm công cụ nhận dạng tiếng nói. Sphinx là một công cụ nhận dạng tiếng nói rất mạnh mẽ, có tính môđun hóa cao. Mỗi thành phần biểu diễn một môđun có thể dễ dàng được thay thế, cho phép các nhà nghiên cứu thực nghiệm một môđun khác mà không cần phải thay đổi các thành phần còn lại của hệ thống. Sphinx đã được sử dụng trong nhiều hệ thống nhận dạng như: cairo, jvoicexml, các chương trình điều khiển như SpeechLion, VoiceKey Sự kết hợp giữa phần cứng và các thành phần đã tạo ra một hệ thống nhỏ gọn có thể điều khiển bật/tắt một số thiết bị điện gia dụng như: đèn, quạt và tivi. Đặc biệt là truyền tín hiệu điều khiển thiết bị không dây nhằm tạo sự linh động, dễ dàng lắp đặt. II. CÁCH THỨC NHẬN DẠNG TIẾNG NÓI A. Nhận dạng tiếng nói Nhận dạng tiếng nói là một quá trình phức tạp bao gồm nhiều khâu biến đổi. Tín hiệu tiếng nói phát ra là tương tự. Từ quá trình lấy mẫu, lượng tử hóa và mã hóa để thu được tín hiệu số. Các mẫu tín hiệu này được trích chọn đặc trưng. Những đặc trưng này sẽ là đầu vào của quá trình nhận dạng. Hệ thống nhận dạng sẽ đưa ra kết quả nhận dạng. Tín hiệu tiếng nói đầu tiên được tiền xử lý và rút trích đặc trưng. Kết quả thu được sau quá trình này là tập các đặc trưng âm học (acoustic features). Để có thể thực hiện việc so sánh với các tham số đầu vào của hệ thống nhận dạng, trước hết hệ thống phải được huấn luyện và xây dựng các đặc trưng. Trong quá trình huấn luyện, hệ thống dùng các vector đặc trưng được đưa vào để ước lượng, tính toán các tham số cho các mẫu tham khảo. Một mẫu tham khảo chính là bản mẫu dùng để so sánh và nhận dạng, các mẫu tham khảo này mô phỏng cho một từ, một âm tiết, hoặc một âm vị. Trong quá trình nhận dạng, dãy các vector đặc trưng được so sánh với các mẫu tham khảo. Sau đó, hệ thống tính toán độ tương đồng của dãy vector đặc trưng và mẫu tham khảo. Việc tính toán độ tương đồng được được thực hiện bằng cách áp dụng các thuật toán đã được chứng minh hiệu quả như thuật toán Vitertbi (trong Markov ẩn). Mẫu có độ tương đồng cao nhất là kết quả của quá trình nhận dạng. Có các loại hệ 5 th M p B S s K q n n n tr g c v p d đ n đ h b G v c 76 ống nhận dạn ột số phươn háp trí tuệ nh . Nhận dạng phinx [3] là m ống. Đó là nh - Hỗ trợ nh - Là một h ứng nhu cầ - Hỗ trợ nh API Gramm - Xây dựng cầu nhận d iến trúc bộ th Bộ ngo uả là một tập Bộ ngô gôn ngữ rồi m gôn ngữ mà c gôn ngữ ở cấ úc ngôn ngữ raph-driven huyển sang m iệc quan sát N Simple háp có lặp ha ùng để hỗ trợ JSGFG ộc lập nền tản LMGra út ngữ pháp m ổi trạng thái ỗ trợ cho các ộ nhớ, do đó ram đúng đư iệc lưu trữ bộ ách phát âm c g là nhận dạn g pháp nhận ân tạo. tiếng nói bằ ột bộ thư việ ờ các đặc điểm ận dạng tiếng ệ thống nhận u nhận dạng n iều mô hình n ar Format (J sẵn các thuậ ạng. ư viện nhận d ại vi (FrontE các vector đặ n ngữ (Ling ô hình hóa c húng ta cần n p độ là các từ sẽ được mô grammar: B ột từ; Mô hì -1 từ đứng tr WordListGr y không. Nếu liên kết nhận rammar: Hỗ g, Unicode c mmar: Định ỗi từ và làm giới hạn (fini mô hình ASC nó làm việc ợc phát sinh nhớ, cho ph ho các từ ta đ g từ liên tục dạng như: ph ng thư viện C n nhận dạng : nói ở chế độ dạng đồ sộ nh hư xây dựng gôn ngữ dạng SGF) và ARP t toán tìm kiế ạng gồm các nd): Xử lý tí c trưng. uist): bằng cá húng vào đồ hận dạng, nó . Thành phần hình hóa ở đâ iễu diễn một đ nh stochastic ước. ammar: Định không lặp, n dạng từ tầm t trợ JavaTM ủa các ngữ ph nghĩa một ng việc tốt với te-state trandu II N-Gram tr tốt với các m bởi CMU-Ca ép nó làm việ ã xây dựng tr , nhận dạng từ ương pháp âm MU Sphinx tiếng nói mạn trực tiếp hoặc ưng có khả n các bộ lọc, cá ASCII và cá Aformat FST m tối ưu (brea thành phần sa Hình 1. Kiến n hiệu từ bên c công cụ và thị. Ở bộ này gồm các thà này có vai t y theo hai m ồ thị từ có hư N-Gram: M nghĩa một t gữ pháp sẽ đ hường. Speech API áp. ữ pháp dựa t các unigram v cer) trong đị ong định dạng ô hình ngôn n mbridge Stat c với các tập ong mô hình P tách biệt, nh học - ngữ â h mẽ và đượ chia lô, có kh ăng tháo lắp c hàm cửa sổ c phiên bản n grammars. th first, word u: trúc tổng quát ngoài, thực h phương phá cấu tạo khá nh phần nhỏ rò quan trọng ô hình: graph ớng. Mỗi nút ô hình này cu ừ dựa trên da ược dùng cho Grammar For rên một mô hì à bigram, xấp nh dạng ngữ ARPA. Simp gữ nhỏ. Larg ictical Langu tin rất lớn, tr ngôn ngữ. M HƯƠNG PHÁP ận dạng phụ t m học, phươ c sử dụng rất ả năng nhận rất linh động. , các phép biế hị phân của u pruning), dễ của Sphinx iện qua một p ngôn ngữ, đ phức tạp vì n sau: Mô hình xác định nhữ -driven gramm biểu diễn mộ ng cấp các x nh sách các t một nhận dạ mat (JSGF), nh ngôn ngữ xỉ 1000 từ. pháp ARPA F leNGramMo eTrigramMod age Modeling ên 100MB. B ô hình âm học ĐIỀU KHIỂN T huộc người n ng pháp nhận nhiều trong c dạng tiếng nó Hỗ trợ sẵn đ n đổi, nigram, bigra dàng tinh chỉ số bộ lọc và ọc vào các t ó quy định h ngôn ngữ: Đ ng thứ hệ thố ar và Stocha t từ đơn và m ác suất cho c ừ. Một tham ng từ tách bi định nghĩa m thống kê. LM FSTGrammar ST. SimpleN del không cố el: Cung cấp Toolkit. Lar ộ từ điển: Th : Cung cấp m HIẾT BỊ BẰNG ói và độc lập dạng mẫu, ác ứng dụng i rời rạc và liê ầy đủ các tính m, trigram, Ja nh cho phù h xử lý dữ liệu ập tin cấu trú ầu như toàn b ọc vào tập t ng cần nhận stic N-Gram ỗi cung là xá ác từ được ch số tùy chọn ệt. Nếu lặp, n ột biểu diễn Grammar phá : Hỗ trợ một GramModel: làm tối ưu vi hỗ trợ các m geTrigramMo ành phần này ột ánh xạ giữ TIẾNG NÓI người nói. và phương trong cuộc n tục. năng đáp va Speech ợp với nhu cho ra kết c của một ộ phạm vi in cấu trúc dạng. Cấu ; Mô hình c suất dịch o dựa vào chỉ ra ngữ ó sẽ được theo BNF, t sinh một bộ chuyển Cung cấp ệc sử dụng ô hình N- del tối ưu cung cấp a một đơn Đv th từ tr ( đ â ( c đ t q đ c p c tr p p g l th A p n B l ỗ Văn Minh, Ng ị tiếng nói và ể đưa thông cấu trúc ngữ Đồ thị ong bộ giải m SearchState), ường cung bi m học: biểu d Features) từ b ác thuật toán ặc trưng để tì ìm kiếm khi x uả. Và thêm ổi trong quá t òn bổ sung th hần cắt tỉa (P ung cấp các g ạng thái, nó hép toán để tí Có thể hần mềm trên iặt, điều hòa, à embedded c ống nhúng đ . Máy tính n Raspbe hi lợi nhuận hững công v CM2835 (là í âm thanh/vid CPU GPU RAM USB Ngõ ra Ngoại Nguồn Kích th Hệ điề uyễn Minh Sơn, một HMM c tin vị trí của t pháp của mô tìm kiếm (Se ã. Đồ thị tìm biểu diễn mộ ểu diễn các tr iễn khả năng ộ ngoại vi kế suy ra kết qu m ra ánh xạ t ử lý kết quả, đặc điểm nữa ình tìm kiếm êm các công runer). Nói v iá trị mật độ sẽ gọi đến thà nh điểm số. chúng ta đã q PC chỉ chiếm tủ lạnh, tóm omputing, ha ược sử dụng p húng Raspbe rry Pi [4] là m Raspberry Pi iệc tùy biến chip xử lí mo eo, và các tín Audio vi cấp thấp nuôi ước u hành Phan Thiện Phướ ó thể được đá ừ và ngữ cản hình ngôn ng arch Graph) kiếm này là t trong hai trạ ạng thái biến chuyển từ trạ t hợp với đồ ả nhận dạng. ương ứng củ Sphinx cung khác các hệ để tăng hiệu cụ hỗ trợ cho ề thành phần trạng thái xu nh phần Scor uen lập trình một phần n lại là tất cả y physical co hổ biến hiện rry Pi Hì ột máy tính Foundation khác nhau. Đ bile có kích th h năng khác ARM1 Broadc (1080) 512M 2 cổng Giắc 3 Ethern 8 GPIO 5V/700 85.60 m Debian c nh giá dựa v h từ thành ph ữ. : Là kết quả một đồ thị c ng thái: phát đổi có thể, trê ng thái này đ thị tìm kiếm Nhiệm vụ củ a nó trong đồ cấp các tiện thống khác là suất tìm kiếm việc đánh giá Scorer thì nó ất hiện. Khi t er, nó sẽ phâ III. HỆ T trên PC, với n hỏ sản lượng các thiết bị đ mputing, tức nay là Arduin nh 2. Máy tính nhúng kích c với tiêu chí x ặc tính của ước nhỏ hay Tất cả được Bảng 1. Bản 176JZF-S 700M om Video Cor H.264/MPEG- B SDRAM .5mm, HDMI et RJ45, USB h , UART, I2C, mA (3.5W), cấ m x 53.98 mm GNU/Linux, R ào các đặc trư ần mô hình n mà bộ ngôn n ó hướng, tron hoặc không p n các cung nà ến trạng thái được phát sin a thành phần thị tìm kiếm. ích có khả năn không gian t . Ngoài ra để kết quả nhận là một modu hành phần qu n tích các thô HỐNG NHÚ hững ngôn n phần mềm tr iện tử xung q là lập trình tư o và Raspber nhúng Raspbe ỡ nhỏ và chạy ây dựng hệ t Raspberry Pi được dùng tro tích hợp bên g cấu hình Ras Hz e IV, hỗ trợ O 4 - Lưu trữ: khe ub... SPI, +3.3V, +5 p nguồn qua U aspbian OS, A ng được cun gôn ngữ. Định gữ phát sinh g đó mỗi nút hát (emitting y có các giá t kia. Bộ giải m h từ bộ ngôn quản lý tìm k Để đáp ứng g phát sinh l ìm kiếm tron nâng cao hiệu được, đó là t le dùng để ư ản lý tìm kiếm ng tin đặc trư NG gữ như C, C+ ên thị trường uanh chúng ta ơng tác với c ry Pi. rry Pi thế hệ B hệ điều hành hống mà nhi xây dựng x ng điện thoại trong con chi pberry Pi penGL,MPEG cắm thẻ SD/M V, GND SB hoặc chân G rch Linux ARM g cấp bởi bộ nghĩa ngữ c được cuối cù được gọi là state hay non rị xác suất đư ã (Decoder) ngữ để tiến h iếm là nhận tìm ra kết qu ưới và các đá g Sphinx có t suất của kết hành phần đá ớc lượng xác yêu cầu đá ng của trạng +, C#, Java, P . Còn lại là co . Lập trình th ác thiết bị thự Linux. Đượ ều người có t oay quanh b di động) bao p này. -2, VC-1; phá MC, SDIO - PIO , RISC OS, F ngoại vi. Các ảnh này được ng để đưa và một trạng thá -emitting stat ợc tính toán t : Sử dụng các ành giải mã v dạng các tập ả chính xác tr nh giá độ tin hể được tinh quả nhận dạn nh giá (Score suất của trạn nh giá điểm s thái đó rồi áp ython, Ruby de điều khiển eo hướng này c. Và 2 trong c phát triển b hể sử dụng đ ộ xử lí SoC gồm CPU, G t video Full H Kết nối: 10/1 reeBSD, Plan 9 577 ánh xạ có xây dựng o sử dụng i tìm kiếm e). Và các ừ mô hình đặc trưng à áp dụng các vector ong đồ thị cậy từ kết chỉnh thay g, Sphinx r) và thành g thái khi ố cho một dụng các , Nhưng tivi, máy được gọi số các hệ ởi tổ chức ược trong Broadcom PU, bộ xử D 00 5 tr k th c tr R n ứ q 1 th G B c c k G t th th th b tư b 78 Raspbe ợ mã x86/x64 hác. Raspberr ích của ngườ huyên dụng c ình cho việc aspberry Pi. N goại vi qua h ng dụng như: Trong s ua phải khi đ 7: chân nguồ eo chuẩn UA PIO giao tiếp . Board mạc Arduino ơ, Bo mạch huẩn hóa, nên ết nối Interne SM shield, ải về trình biê Để điều ông qua són u/phát sóng v Module iết bị ngoại v ps. Và luôn l ơng ứng (gử Hệ thốn ằng sóng vô t rry Pi không t , nhưng vẫn y Pi hỗ trợ lậ i dùng. Khả hỉ xử lý 1 hay nhận dạng tiế hằm mục đí àng chân GPI điều khiển ro ơ đồ chân GP ặt Raspberry P n 3.3v, 2, 4: RT, 7, 11, 1 chuẩn I2C, 1 h xử lý Ardu là một bo m này sử dụng đã có rất nh t thì có Ethern Bài báo sử d n dịch Arduin I khiển thiết b g vô tuyến. M ô tuyến RF S này dùng để i. Module này uôn lắng ngh i tín hiệu HIG V. MÔ g điều khiển uyến. hể chạy hệ đi có thể chạy b p trình C/C++ năng lập trình vài công việ ng nói thử ng ch tối ưu tron O. Với tính nă bot, điều khiể IO [5] có cá i, hàng chân chân nguồn 5 2, 13, 15, 16 2: GPIO điều ino ạch xử lý đư ngôn ngữ lậ iều các bo mạ et shield, mu ụng trình biê o 1.0.6 và sử V. XÂY DỰN ị điện 220V A odule được x I4463, modu Hình 4 nhận lệnh điề chạy cùng tầ e lệnh từ bộ H/LOW qua HÌNH ĐIỀU trung tâm sẽ ều hành Wind ằng Linux vớ , Java, Pytho ngay trên R c thì việc lập hiệm với độ g quá trình xử ng này Raspb n thiết bị điện Hình 3 c chân được đ GPIO sẽ nằm v, 6, 9, 14, 20 , 18 và 22: ch khiển PWM ợc dùng để p trình là ngô ch mở rộng ( ốn điều khiển n dịch mà Ard dụng phiên b G MODUL C, bài báo sử ây dựng từ c le bật/tắt điện . Mô hình kết n u khiển từ hệ n số 433 kHz trung tâm. Vớ chân số 9 trên KHIỂN TH nhận tín hiệu Hình 5. Sơ đ P ows vì bộ xử i các tiện ích n n, việc hỗ aspberry Pi v trình trở nên ổn định cao. B lý tiếng nói. erry Pi có thể trong nhà, . Sơ đồ chân G ánh thứ tự hà cạnh bên cổn , 25: chân nố ân GPIO, 19 , tăng giảm cư lập trình tươn n ngữ gần gi gọi là shield) động cơ thì uino cung cấ ản dành cho h E ĐIỀU KHI dụng một m ác thiết bị: bo 220V AC. Cá ối module điều thống trung t với bộ điều k i mỗi lệnh đ Arduino Pro IẾT BỊ BẰN tiếng nói và p ồ hoạt động củ HƯƠNG PHÁP lí BCM2835 hư lướt web, trợ nhiều ngô ẫn có thể đượ khó khăn. Do ước tiếp the Máy tính nhú được áp dụn PIO ng trên là số g tín hiệu vid i đất Ground , 21, 23, 24, ờng độ. g tác các thi ống với C/C+ để cắm chồn có Motor shie p để lập trình ệ điều hành W ỂN THIẾT B odule điều kh mạch xử lý c thiết bị đượ khiển thiết bị âm và đưa ra hiển trung tâ ược gửi đến t Mini). G TIẾNG NÓ hản hồi điều a hệ thống ĐIỀU KHIỂN T dựa trên cấu t môi trường d n ngữ lập trìn c, tuy nhiên đó bài báo đ o đưa đoạn co ng này còn h g vào nhiều c chẵn hàng dư eo trên bo Ra 0v, 8, 10: GP 26: GPIO gia ết bị phần cứ +. Arduino l g lên bo mạch ld, muốn kết tại trang chủ indows. Ị TỪ XA iển giao tiếp Arduino Pro M c kết nối với từ xa quyết định bậ m và tốc độ tr hì module nà I TIẾNG V khiển các thi HIẾT BỊ BẰNG rúc ARM nên esktop và các h nhằm tùy bi với một chiế ã dùng máy de vào hệ th ỗ trợ điều kh ông trình ngh ới là số lẻ. T spberry Pi. Tr IO truyền nh o tiếp chuẩn ng như cảm à một nền tản Arduino. Ví nối nhận tin n với bo điều k ini (ATmeg nhau như sau t hay tắt nguồ uyền (baudra y sẽ điều khi IỆT ết bị ngoại vi TIẾNG NÓI không hỗ nhiệm vụ ến theo sở c máy tính tính để lập ống nhúng iển thiết bị iên cứu và ính từ trái ong đó: 1, ận tín hiệu SPI, 3, 5: biến, động g đã được dụ, muốn hắn thì có rduino.cc/, hiển chính a 328), bộ : n điện cho te) là 9600 ển thiết bị bên ngoài Đỗ Văn Minh, Nguyễn Minh Sơn, Phan Thiện Phước 579 Tín hiệu tiếng nói được thu từ micro gửi đến chương trình xử lý trong máy tính nhúng Raspberry Pi. Sau đó được khử nhiễu. Tại đây chương trình sẽ nhận dạng những câu lệnh mà đã được học và gửi tín hiệu điều khiển qua bộ phát RF đến module điều khiển 220V AC để bật/tắt thiết bị tương ứng với module đó. Để có thể xây dựng được hệ thống điều khiển trung tâm, bài báo sử dụng các phần mềm và thư viện hỗ trợ sau: Thư viện nhận dạng Pocketsphinx, CMUCLMTK, OpenFST, MIT Language Modeling Toolkit, m2m-aligner, Phonetisaurus, Python, subversion, autoconf, libtool, automake, gfortran, g++, jasper và RPi GPIO. Đây là các phần mềm và thư viện hỗ trợ điều khiển chân GPIO, các trình biên dịch để xây dựng chương trình và thư viện nhận dạng tiếng nói, Ở đây bài báo sử dụng tên cho hệ thống là “ROBOT” - là từ ít xuất hiện khi người Việt nói chuyện với nhau nên sẽ không làm cho thiết bị hiểu nhầm là lệnh. Đầu tiên, cần xây dựng bộ từ điển được sử dụng. Các từ này được chứa trong một tập tin định dạng *.txt với nội dung là :”ROBOT” Sau khi xây dựng tập tin cho từ ROBOT. ROBOT R OW B AA T ROBOT(2) R OW B AH T Và một tập tin mô hình ngôn ngữ của từ điển này cũng được cho ra với nội dung như sau: \data\ ngram 1=3 ngram 2=2 ngram 3=1 \1-grams: -0.7782 -0.3010 -0.7782 -0.2218 -0.7782 ROBOT -0.2218 \2-grams: -0.3010 ROBOT 0.0000 -0.3010 ROBOT -0.3010 \3-grams: -0.3010 ROBOT \end\ Một số module không cần thiết đã được xóa đi là: Birthday.py, HN.py, Joke.py, Life.py, News.py, Time.py, Weather.py. Và để điều khiển được thiết bị qua sóng vô tuyến bài báo sử dụng 2 loại module với nội dung sau: Module gửi tín hiệu là một chuỗi các ký tự điều khiển từ xa qua sóng vô tuyến truyền với tốc độ là 9600 bps và mỗi lần truyền tín hiệu mất 0,05 giây. import serial #... def main(argv): try: opts, args = getopt.getopt(argv,"b:p:h:s:r ",['input=', 'params=', 'help']) except getopt.GetoptError: sys.exit(2) for opt, arg in opts: if opt in ("-r", "--radio"): port = serial.Serial("/dev/ttyAMA