HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN ----------------
BÀI TẬP LỚN MÔN CÔNG NGHỆ MULTIMEDIA Đề tài:
XÂY DỰNG CHƯƠNG TRÌNH TỔNG HỢP TIẾNG NÓI TEXT TO SPEECH (SỬ DỤNG THƯ VIỆN CỦA MICROSOFT)
Giáo viên hướng dẫn:TS. Trần Nguyên Ngọc Nhóm học viên:
Nguyễn Thị Phượng Trần Thanh Thuỷ Lê Thành Trung
Lớp:
Cao học KHMT – K22
HÀ NỘI, NĂM 2011
1
MỤC LỤC
MỞ ĐẦU.........................................................................................................................................3 Giới thiệu ........................................................................................................................................4 Cài đặt và Add thư viện Microsoft Speech SDK 5.1 ...................................................................... 4 Xây dựng giao diện.......................................................................................................................... 7 Các thủ tục thực hiện....................................................................................................................... 8
2
MỞ ĐẦU
Trong thời đại của thông tin tốc độ cao, chúng ta mong muốn nhận được thông tin ngay tức thì và đồng thời thông qua nhiều cách thức khác nhau. Nhu cầu này giải thích tại sao khi ta sử dụng một số phần mềm thường có âm thanh hướng dẫn đi kèm, điển hình như sử dụng bàn phím điện thoại. Các nhu cầu này thúc đẩy công nghệ Multimedia cũng như xử lý tiếng nói phát triển. Với những mong muốn thiết thực đó nhóm chúng em đã chọn nghiên cứu đề tài “ Xây dựng chương trình tổng hợp tiếng nói Text To Speech” sử dụng thư viện của Microsoft. Trong bài báo cáo này nhóm chúng em sẽ xây dựng ứng dụng tổng hợp tiếng nói với đầu vào là text từ interface có sẵn trong thư viện SAPI (Speech Application Programming Interface) của Microsoft. Chúng em xin gửi lời cảm ơn chân thành tới thầy TS Trần Nguyên Ngọc, thầy đã cung cấp nhiều tài liệu bổ ích và hướng dẫn chúng em hoàn thành bài báo cáo này. Nhóm thực hiện mong tiếp tục nhận được nhiều ý kiến đóng góp quý báu của Thầy và các bạn trong lớp để có những hiểu biết sâu hơn về lĩnh vực đang nghiên cứu. Xin chân thành cảm ơn! Nhóm thực hiện Nguyễn Thị Phượng Trần Thanh Thuỷ Lê Thành Trung
3
Giới thiệu Giao diện lập trình ứng dụng tiếng nói (The speech application programming interface - SAPI) là API được phát triển bởi Microsoft, nó cho phép ghi lại tiếng nói (speech recognition) và tổng hợp tiếng nói (speech synthesis) trong các ứng dụng window. Cho đến ngày nay, có rất nhiều các phiên bản API ra đời. Nhìn chung, tất cả các phiên bản của API đã được thiết kế như một nhà phát triển phần mềm có thể viết một ứng dụng để thực hiện việc ghi lại và tổng hợp tiếng nói bằng cách sử dụng một tập interface chuẩn, và có thể truy cập từ rất nhiều ngôn ngữ lập trình. Hơn nữa, chúng ta có thể tạo ra máy Text-To-Speech hay Speech Recognition của riêng mình để thay thế cho cỗ máy được cung cấp bởi Microsoft, miễn là các cỗ máy này phải thực hiện theo các interfaces đã định nghĩa sẵn.
Cài đặt và Add thư viện Microsoft Speech SDK 5.1 Trong phần này, chúng ta sẽ được hướng dẫn các bước cài đặt thư viện Microsoft Speech Object Library và thư viện Sample TTS Engine 1.0 Type Library. Cài đặt thư viện Microsoft Speech SDK 5.1
4
Thêm thư viện Microsoft Speech Object Library và thư viện Sample TTS Engine 1.0 Type Library vào project - Click chuột phải vào project, chọn Add reference:
- Một hộp thoại sẽ mở ra, chọn COM, sau đó tìm và thêm 2 thư viện Speech Object Library và thư viện Sample TTS Engine 1.0 Type Library như hình vẽ dưới đây:
5
- Sau khi cài đặt xong ta có kết quả sau:
6
Xây dựng giao diện - Chúng ta thiết kế các thành phần của chương trình như hình vẽ:
+ Configuration: Group box này được thiết kế chứa 2 điều khiển, chọn người nói (Select Speaker) sử dụng hộp thoại Combobox và chọn tốc độ nói (Rate Of Speech) sử dụng Track Bar. + Speak As You Type: Group này chứa 1 text box, bất cứ khi nào chúng ta gõ 1 ký tự vào hộp thoại, ký tự đó sẽ ngay lập tức được đọc bởi Speaker (nhận biết kết thúc ký tự bằng phím Enter hoặc Tab). + Load a Text and Read It: Group này chứa 1 Rich Textbox và 4 button (Open File, Read File, Stop, Save To Audio File), bạn có thể click vào button “Open File” để mở file text và load vào text box, click vào button “Read File” để 7
nghe Speaker đọc nội dung của file, bạn cũng có thể lưu file đọc của Speaker dưới dạng file Audio bằng cách click vào button “Save To Audio
Các thủ tục thực hiện - Khai báo đối tượng SpVoice và khởi tạo tốc độ đọc RateOfSpeech. #region Declaration public SpVoice vox = new SpVoice(); public int RateOfSpeech=1; #endregion - Load Reader lên combobox đồng thời với load Form. private void Form1_Load(object sender, EventArgs e) { // Load the voices combo box foreach (ISpeechObjectToken Token in vox.GetVoices(string.Empty, string.Empty)) { CboVoiceOption.Items.Add(Token.GetDescription(0)); } CboVoiceOption.SelectedIndex = 0; } - Xử lý sự kiện khi ấn nút điều khiển Enter hoạc Space private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { vox.Rate = RateOfSpeech; vox.Voice = vox.GetVoices(string.Empty,string.Empty).Item(CboVoiceOption.SelectedIndex); //' this will try to speak each word as you type, it does not keep up if (e.KeyChar == (char )Keys.Enter || e.KeyChar==(char )Keys.Space) { 8
vox.Speak(textBox1.Text, SpeechVoiceSpeakFlags.SVSFDefault); textBox1.Text = ""; } } - Xử lý sự kiện click nút “Open File” private void button1_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { System.IO.StreamReader str=new System.IO.StreamReader (dlg.FileName); richTextBox1.Text = str.ReadToEnd().ToString(); } } - Sử lý sự kiện click nút “Read File” private void button2_Click(object sender, EventArgs e) { vox.Rate = RateOfSpeech; vox.Voice = vox.GetVoices(string.Empty, string.Empty).Item(CboVoiceOption.SelectedIndex); vox.Speak(richTextBox1.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync); } - Sử lý sự kiện click nút “Stop” private void button3_Click(object sender, EventArgs e) { vox.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak); 9
} - Sử lý sự kiện click nút “Save To Audio File” private void button4_Click(object sender, EventArgs e) { SaveFileDialog sdlg = new SaveFileDialog(); sdlg.Filter= "All files (*.*)|*.*|wav files (*.wav)|*.wav"; sdlg.FilterIndex = 2; if (sdlg.ShowDialog() == DialogResult.OK) { SpeechLib.SpVoice spvoice1 = new SpeechLib.SpVoice(); SpeechLib.SpFileStream cpFileStream = new SpeechLib.SpFileStream(); cpFileStream.Open(sdlg.FileName, SpeechLib.SpeechStreamFileMode.SSFMCreateForWrite, false); spvoice1.AudioOutputStream = cpFileStream; spvoice1.Voice = spvoice1.GetVoices(string.Empty, string.Empty).Item(CboVoiceOption.SelectedIndex); spvoice1.Speak(richTextBox1.Text, SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault); spvoice1 = null; cpFileStream.Close(); cpFileStream = null; } }
10
Tài liệu tham khảo [1]. Text to Speech with the Microsoft Speech Library and SDK version 5.1 , salysle, 2006 (website codeproject.com). [2]. Giáo trình lập trình .NET , Lê Văn Minh, 2008, Đại Học Đà Nẵng. [3]. Website: http://en.wikipedia.org/wiki/Microsoft_Speech_API
11