Tích hợp VNspeech để phát âm tiếng Việt dựa trên tổng hợp formant

Liên hệ QC

Đào Việt Cường

Cu Tí sành điệu
Thành viên danh dự
Tham gia
11/6/06
Bài viết
527
Được thích
760
Giới tính
Nam
Nghề nghiệp
Kiểm toán nhà nước
CÁC VẤN ĐỀ THẢO LUẬN TRONG CHỦ ĐỀ NÀY
-----o0o----

1. Giới giới thiệu về VNSpeech - Engine phần mềm giúp máy tính nói tiếng Việt
2. Một ứng dụng nhỏ với VNSpeech cho người sử dụng excel
3. Thảo luận - Góp ý:
Trong mỗi phần, các bạn có thể đặt ra các nghi vấn, các khúc mắc hoặc có thể là câu đố, nhằm giúp vấn đề thảo luận nổi bật hơn. Các bạn không nên đặt các câu hỏi không liên quan đến chủ đề hoặc hướng chủ đề thảo luận sang vấn đề khác.
 
Lần chỉnh sửa cuối:
Giới giới thiệu về VNSpeech - Engine phần mềm giúp máy tính nói tiếng Việt

VNSpeech là thư viện phần mềm thực hiện chuyển văn bản, nội dung tiếng Việt thành tiếng nói(TTS) . Đây là một thư viện điển hình mà mình muốn minh hoạ cho các bạn trong việc tích hợp các ứng dụng bên ngoài vào dự án của bạn. Bạn hãy đọc kỹ bài viết dưới đây và tuân thủ các quy định của tác giả.

Chức năng:

- Phân tích và chuẩn hoá văn bản tiếng Việt
- Phân tích và biểu diễn các đặc tính ngôn điệu của câu tiếng Việt
- Chuyển thành biểu diễn ngữ âm của câu tiếng Việt
- Tổng hợp tín hiệu tiếng nói tiếng Việt bằng phương pháp tổng hợp dựa trên các luật về mô hình và nguyên lý tạo tiếng nói con người và từ các thông tin ngữ âm (không phải bằng ghi âm tiếng nói tự nhiên)
- Ghi ra file, phát ra loa tín hiệu tiếng nói tổng hợp

Đặc điểm:

- Các tham số đặc trưng của tiếng nói được điều khiển rất mềm dẻo, có thể biến đổi thành nhiều giọng khác nhau
- Kích thước toàn bộ chương trình rất nhỏ, thuận tiện cho tích hợp các thiết bị có tài nguyên hạn chế (cầm tay, di động...)
- Mã nguồn được viết bằng C++ nên tính khả chuyển cao

Thông số kỹ thuật:

- Tiếng Việt được tổng hợp bằng phương pháp tổng hợp trên cơ sở các luật
- Xử lý văn bản tiếng Việt thuộc các bảng mã TCVN3, Unicode
- Tín hiệu tiếng nói tạo ra được mã hoá theo PCM 16 bit, mono (có thể thay đổi tần số lấy mẫu)
- Tổ chức thành các hàm API trong các thư viện DLL/COM, có thể sử dụng với mọi ngôn ngữ lập trình
- Chạy trên môi trường Windows 95/98/ME/NT/2000/XP/Server2003

Lĩnh vực ứng dụng:

- Hệ thống đáp ứng bằng tiếng nói
- Hệ thống giao tiếp người-máy bằng tiếng nói
- Thêm lựa chọn là đưa thông báo bằng tiếng Việt cho các ứng dụng
- Các ứng dụng hỗ trợ người tàn tật: đọc giúp người mù, nói giúp người câm
- Các hệ thống telematics
- Các hệ thống thông điệp hợp nhất
- Các hệ thống khai thác thông tin qua đường điện thoại
- Các ứng dụng thông báo bằng tiếng nói với nội dung thay đổi như: các hệ thống xếp chỗ tự động trong các ngân hàng, phòng bán vé...
- Ứng dụng soát lỗi chính tả, đọc các thông tin trên màn hình giúp người dùng
- Các ứng dụng trong giáo dục

Điều kiện bản quyền

Sản phẩm được xây dựng bởi Phòng Công nghệ Phần mềm (Softex) - Trung tâm Công nghệ Vi điện tử và Tin học,
Viện Ứng dụng Công nghệ - Bộ Khoa học và Công nghệ.
Phòng 413, C6 Thanh Xuân Bắc – Hà nội.
Tel. (04) 8547476; 0913079877

Việc sử dụng VNSpeech phải tuân thủ theo các quy định của tác giả:

- Phiên bản VnSpeech này được cung cấp để sử dụng cho mục đích học tập, nghiên cứu, không sử dụng cho các mục đích thương mại.
- Khi tích hợp với ứng dụng của bạn, đề nghị thêm dòng sau vào mục “About” của bạn: “Sử dụng thư viện Tổng hợp tiếng nói VnSpeech của Softex

Nếu không tán thành các điều kiện trên, xin hãy xoá thư viện này khỏi máy của bạn.

Hướng dẫn sử dụng

Toàn bộ thư viện chuyển văn bản thành tiếng nói cho tiếng Việt dựa trên tổng hợp formant - VNSPEECH được đóng gói trong file vnspeech.dll. Hãy tích hợp nó cùng với ứng dụng của bạn theo quy cách ứng với từng ngôn ngữ lập trình cụ thể.
File thư viện Vnspeech.dll gồm có các hàm sau:
- VietTTS : Thực hiện chuyển văn bản thành tiếng nói
- VietTTSStop :Dừng giữa chừng quá trình đọc

Mô tả: (theo cú pháp C/C++)

int VietTTS(char*s)
- Đối số s (kiểu xâu ký tự): đoạn văn bản tiếng Việt theo bảng mã TCVN 5712 (font ABC)
- Giá trị trả về (bằng integer): thời gian (bằng ms) để phát (play) hết đoạn tiếng nói tổng hợp
bool VietTTSStop()
-Kết thúc giữa chừng quá trình đọc ra loa
- Hàm không cần đối số

Chú ý:

Chỉ hiểu văn bản tiếng Việt theo bảng mã TCVN 5712 (font ABC) và các dấu ngắt, nghỉ. Cần phải xử lý văn bản để trở thành thuần Việt trước khi gọi hàm.
Một đoạn văn bản dài nên chia thành nhiều phần (câu) để cung cấp cho hàm VietTTS.
Cần sử dụng Timer để đồng bộ khi đọc liên tục nhiều đoạn
Các bạn có thể tìm hiểu về Engine này tại đây
 
Lần chỉnh sửa cuối:
Tích hợp VNSpeech cho phép End-User sử dụng hàm MsgBox()

Chúng ta đều biết tới MsgBox là một hàm cho phép người lập trình đưa ra các thông điệp từ đó kiểm soát và điều hướng chương trình theo các ngữ cảnh tương tác giữa người dùng và máy. Để sử dụng hàm này Microsoft buộc chúng ta phải hiểu về VBA. Tuy nhiên hầu hết người dùng thì không thích như vậy. Vậy nên chăng giúp người sử dụng có được hàm này một cách đơn giản hơn chỉ bằng thao tác chuột Insert Function hoặc Alt+F3?.
Trong bài viết này chúng ta thử cùng nhau thảo luận về hàm MessageBox. Đoạn mã dưới đây minh hoạ việc nâng cấp MsgBox và việc ứng dụng VNSpeech cho chủ đề này.
Lưu ý, trước khi sử dụng các bạn right-click vào thư viện VNSpeech.dll chọn Save as Target để tải thư viện này về máy, và đăng ký nó vào hệ thống. Cách thức đăng ký các bạn xem trong chủ đề "Các ứng dụng bên ngoài trong dự án của bạn"


Option Explicit
'- Chương trình có sử dụng thư viện Tổng hợp tiếng nói VnSpeech của Softex
'- Việc sử dụng thư viện VnSpeech này chỉ dùng cho mục đích học tập, nghiên cứu, không sử dụng cho các mục đích thương mại và phù hợp với yêu cầu của tác giả


Public strHelpFile As String 'Nếu bạn có tập tin trợ giúp Help.chm bạn có thể gán đường dẫn vào tham số này
' Khai báo hàm Việt Text to Speech trong thư viện Vnspeech.DLL
Public Declare Function VietTTS Lib "Vnspeech.DLL" (ByVal test As String) As Integer
'Khai báo hàm Stop giữa chừng khi VietTTS đang play
Public Declare Function VietTTSStop Lib "Vnspeech.DLL" () As Boolean
'___________________________________________________

'Hàm MessageBox dựa trên hàm MsgBox của Windows, thứ tự các tham số vẫn được dữ nguyên, chỉ bổ sung tham số dành cho đọc tiếng Việt và chức năng trợ giúp
Public Function MessageBox(Optional ByVal strPrompt As String, _
Optional ByVal vbButtons As VbMsgBoxStyle = vbMsgBoxHelpButton, _
Optional ByVal strTitle As String, _
Optional ByVal HelpFile As String, _
Optional ByVal varContext, _
Optional ByVal lngKey As Long, _
Optional ByVal blnMessageBox As Boolean = True, _
Optional ByVal blnVietTTS As Boolean = True, _
Optional ByVal strVietText As String) As VbMsgBoxResult
'blnVietTTS dùng để cho phép VNSpeech có speech hay không
'strVietText là chuỗi để speech
Select Case Err.Number
Case 9
strVietText = "Con trỏ vô định, dữ liệu đang được bảo vệ!"
strPrompt = strVietText & vbNewLine & "(" & Err.Description & ")"
Case 0
If strVietText = "" Then strVietText = strPrompt
Case Else:
strVietText = strPrompt
strPrompt = strVietText & vbNewLine & Err.Description
End Select
lngKey = Err.Number
If lngKey = 0 Then lngKey = CLng(vbButtons)
If HelpFile = "" Then HelpFile = IIf(strHelpFile = "", ThisWorkbook.Path & "\Help.chm", strHelpFile)
If blnVietTTS Then blnVietTTS = GetSetting("AccGroup", "OPTIONS", "Phatamcanhbao", True)
If IsMissing(varContext) Then varContext = 0
If Err.Number <> 0 Then
If strTitle = "" Then strTitle = "Lỗi hệ thống: " & Err.Number
strPrompt = "Không thực hiện được vì:" & vbNewLine & strPrompt
If strVietText = "" Then strVietText = "Không thực hiện được..."
If vbButtons = vbMsgBoxHelpButton Then
vbButtons = vbCritical + vbMsgBoxHelpButton
Else
vbButtons = vbButtons + vbMsgBoxHelpButton
End If
Else
If strTitle = "" Then strTitle = "Thông báo!"
If strVietText = "" Then strVietText = "Cẩn thận, kiểm tra và thử lại trước khi thực hiện!"
End If
Select Case vbButtons
Case vbMsgBoxHelpButton
vbButtons = vbInformation
Case vbYesNo, vbYesNoCancel, vbRetryCancel, vbAbortRetryIgnore
vbButtons = vbButtons + vbQuestion
Case vbOK
vbButtons = vbButtons + vbInformation
End Select
vbButtons = vbButtons + vbMsgBoxHelpButton
If blnVietTTS Then VietTTS (strVietText)
MessageBox = MsgBox(strPrompt, vbButtons, strTitle, HelpFile, varContext)
If blnVietTTS Then VietTTSStop
End Function
 
Lần chỉnh sửa cuối:
SAO TÔI LÀM KHÔNG NÓI ĐƯỢC, NÓ BÁO LỖI HOÀI, NẾU CÓ THỂ BẠN LÀM THỬ FILE EXCEL ĐỂ TEST ĐƯỢC KHÔNG?
 
Web KT
Back
Top Bottom