16
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ỷ 1

Text to Speech_29

Embed Size (px)

Citation preview

Page 1: Text to Speech_29

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

Page 2: Text to Speech_29

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

Tài liệu tham khảo...................................................................................................11

2

Page 3: Text to Speech_29

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

Page 4: Text to Speech_29

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

Page 5: Text to Speech_29

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

Page 6: Text to Speech_29

- Sau khi cài đặt xong ta có kết quả sau:

6

Page 7: Text to Speech_29

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

Page 8: Text to Speech_29

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

Page 9: Text to Speech_29

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

Page 10: Text to Speech_29

}

- 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

Page 11: Text to Speech_29

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