Làm thế nào để máy tính của bạn nói chuyện / nói những gì bạn nhập

Có một tính năng thú vị trong Windows cho phép bạn làm cho máy tính của mình nói hoặc nói(computer talk or speak) bất cứ điều gì bạn nói với nó! Phương pháp này tận dụng lợi thế của một API tích hợp được cài đặt trên Windows XP , Vista , 7, 8 và 10 được gọi là SAPI ( Giao diện Lập trình Ứng dụng Giọng nói(Speech Application Programming Interface) ).

Microsoft Speech API là thứ được sử dụng cho tính năng trợ năng(accessibility feature) chuyển văn bản thành giọng nói  được tích hợp trong Windows . Bạn cũng có thể viết các chương trình gọi API , điều này sẽ cho phép bạn cho phép các ứng dụng của mình phát biểu, nhưng đó là dành cho các nhà phát triển.

Thực ra chỉ cần làm cho máy tính của bạn nói những gì bạn muốn là khá dễ dàng! Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo một tập lệnh VBS(VBS script) sẽ nhận đầu vào văn bản(text input) từ người dùng và sau đó nói. Tôi cũng sẽ đề cập đến cách viết mã cứng văn bản bạn muốn nói và sau đó lên lịch để tập lệnh đó chạy trên các sự kiện cụ thể như khởi động Windows hoặc đăng xuất.

Nhập văn bản, nói tin nhắn

Hãy bắt đầu với một tập lệnh đơn giản sẽ bật lên một hộp thoại(dialog box) nơi bạn có thể nhập những gì bạn muốn Windows nói. Đầu tiên(First) , hãy tiếp tục và mở Notepad .

Bước 1:(Step 1:)  Dán văn bản sau vào một tài liệu mới:

Dim message, sapi
message=InputBox(“Enter the text you want spoken”,”Speak This”)
Set sapi=CreateObject(“sapi.spvoice”)
sapi.Speak message

Lưu ý rằng khi bạn sao chép văn bản từ trình duyệt web và dán(web browser and paste) vào Notepad , các dấu ngoặc kép sẽ gây ra sự cố. Trước khi lưu tệp, bạn cần xem qua và xóa từng trích dẫn (“) và nhập lại trích dẫn. Trong ví dụ dưới đây, có sáu dấu ngoặc kép. Nó sẽ trông giống như hình ảnh bên dưới(image below) .

làm cho máy tính nói

Bây giờ khi bạn lưu tệp, hãy đặt bất kỳ tên nào cho tệp, nhưng hãy đảm bảo bạn cũng gõ .VBS sau tên đó. Tiếp theo, đối với hộp Lưu dưới dạng( Save as type) , hãy chọn Tất cả tệp thay vì ( All files)Tài liệu Văn bản(Text Documents) mặc định .

làm cho máy tính nói chuyện

Bây giờ hãy nhấp đúp vào tệp VBS(VBS file) và bạn sẽ thấy một hộp nhập liệu(input box) nơi bạn có thể nhập văn bản bạn muốn nói! Nhập một cái gì đó(Type something) và nhấp vào OK.

nói hộp thoại

Nếu bạn đã làm đúng mọi thứ(everything right) , bạn sẽ nghe thấy giọng nam hoặc nữ nói ra câu của bạn. Nếu bạn nhận được bất kỳ loại thông báo lỗi(error message) nào , hãy đảm bảo sao chép và dán lại văn bản và thay thế các dấu ngoặc kép đó.

Định cấu hình cài đặt giọng nói SAPI

Điều này thật thú vị, nhưng chúng tôi cũng có thể định cấu hình máy tính nhỏ biết nói của mình với các cài đặt khác nhau. Chúng ta có thể thay đổi âm lượng, tốc độ nhanh hay chậm của giọng nói và thay đổi giới tính nam và nữ. Đây là một số mã ví dụ(example code) mà tôi đã thêm một vài dòng bổ sung.

Dim message, sapi
message=InputBox(“Enter the text you want spoken”,”Speak This”)
Set sapi=CreateObject(“sapi.spvoice”)
Set sapi.Voice = sapi.GetVoices.Item(1)
sapi.Rate = 0
sapi.volume = 100
sapi.Speak message

Tỷ lệ mặc định(default rate) là 0 và phạm vi từ -10 đến 10. -10 sẽ có giọng nói siêu chậm và 10 sẽ nói siêu nhanh. Âm lượng được đặt mặc định là 100 và phạm vi từ 0 đến 100. Dòng bắt đầu bằng Set sapi.Voice sẽ cho phép bạn thay đổi sang giọng nói khác, nếu được cài đặt trên hệ thống của bạn.

Lưu ý rằng số lượng giọng nói bạn có thể chọn tùy thuộc vào hệ điều hành(operating system) . Trong Windows 7 , chỉ có một giọng nói duy nhất là Microsoft Anna .

giọng nói được cài đặt

Trong Windows 10 có hai giọng nói: Microsoft David và Microsoft Zira(Microsoft David and Microsoft Zira) như hình bên dưới.

giọng nói microsoft davis

giọng nói microsoft zira

Nếu chỉ có một giọng nói được cài đặt trên hệ thống của bạn, bạn phải thay đổi nội dung sapi.GetVoices.Item (1)(sapi.GetVoices.Item(1) ) thành sapi.GetVoices.Item (0) , nếu không, bạn sẽ nhận được thông báo lỗi(error message) khi cố gắng chạy tập lệnh. Bạn cũng có thể tạo một tài liệu Notepad khác và dán(Notepad document and paste) mã bên dưới vào, mã này sẽ cho bạn biết giọng nói nào đã được cài đặt. Lưu nó dưới dạng tệp .VBS như hình trên và chạy nó.

Set VObj = CreateObject(“SAPI.SpVoice”)
For Each Voice In VObj.getvoices
I = I + 1
msgbox “” & (I – 1) & ” – ” & Voice.GetDescription
Next

Cho đến nay, chúng tôi đã sử dụng hộp thoại bật lên(popup dialog) này để nhập văn bản, nhưng bạn cũng có thể chỉ cần nhập tin nhắn của mình vào tệp script(script file) . Điều này sẽ hữu ích nếu bạn muốn lập lịch để tập lệnh chạy tự động. Rõ ràng, điều này có thể được sử dụng để chơi khăm bạn bè và gia đình của bạn và nó hoạt động rất hiệu quả.

Chỉ cần tưởng tượng ai đó đang bật máy tính của họ và nghe thấy tiếng máy tính nói với họ " Xin chào John(Hello John) , tôi rất buồn ngủ, hôm nay xin đừng làm phiền tôi!" khi nó khởi động! Tôi có thể hứa với bạn từ kinh nghiệm, nó rất điên rồ và bạn chắc chắn nên thử nó.

Để mã hóa thư, chỉ cần thay đổi dòng cuối cùng thành dòng như sau:

sapi.Speak “Hello John, I am very tired today!”

Lập lịch Tệp Tập lệnh

Bây giờ bạn đã mã hóa thông điệp của mình cho mục tiêu đã định, bạn chỉ cần chạy nó khi bạn muốn. Nếu bạn là người hiểu biết về công nghệ, bạn có thể sử dụng một chương trình như AutoIt , chương trình này sẽ cho phép bạn thực hiện những việc cực kỳ hiệu quả như chạy tệp kịch bản(script file) của bạn khi một chương trình nhất định được mở hoặc khi cửa sổ được phóng to hoặc thu nhỏ.

Tôi không có thời gian để tìm hiểu tất cả những điều đó trong bài đăng này, nhưng may mắn thay, Microsoft có một tính năng tích hợp có tên là Task Scheduler cho phép bạn thực hiện một số công việc khá phức tạp với script một cách dễ dàng.

Bài viết trước của tôi đi sâu về cách lập lịch chạy tệp script(script file) khi một số sự kiện nhất định xảy ra trong Windows . Nếu bạn gặp bất kỳ khó khăn nào khi tập lệnh của mình hoạt động, vui lòng đăng nhận xét và tôi sẽ cố gắng trợ giúp. Vui thích!



About the author

Tôi là một lập trình viên máy tính và đã có hơn 15 năm. Kỹ năng của tôi nằm ở việc phát triển và duy trì các ứng dụng phần mềm, cũng như cung cấp hỗ trợ kỹ thuật cho các ứng dụng đó. Tôi cũng đã dạy lập trình máy tính cho học sinh trung học và hiện đang là một giảng viên chuyên nghiệp.



Related posts