主题:如果设置中文语音
yangyycc
[专家分:0] 发布于 2004-01-02 11:50:00
Win2K里面有一个发音控件,能够发出英文语音,怎样能够发出中文语音?
回复列表 (共19个回复)
11 楼
women [专家分:2540] 发布于 2004-01-06 16:58:00
再工程菜单 引用 microsoft speech library 才可以写程序 这是微软的新技术 没有你所说的vtext.languageid
具体可以 到 http://www.vbsky.net 搜索 “tts”
12 楼
women [专家分:2540] 发布于 2004-01-06 17:00:00
我也是看到那里的例子,才作出来的
13 楼
yangyycc [专家分:0] 发布于 2004-01-07 09:03:00
该如何在程序中设置语言类型呢?
14 楼
yangyycc [专家分:0] 发布于 2004-01-07 09:17:00
WWW.VBSKY.NET好象打不开啊!
15 楼
women [专家分:2540] 发布于 2004-01-07 18:56:00
是 http://www.vb-code.net/bbs/index.htm
不好意思先前说错了
16 楼
women [专家分:2540] 发布于 2004-01-07 18:58:00
msTTS文字朗读技术
在安装了winxp后,在控制面板上会产生一个《语音》设备,它实际上就是
大名鼎鼎的msTTS引擎,利用它,可以使我们的应用程序具有阅读中英文文本的
能力。虽然最新的msTTS技术推出已经两年有余,介绍此技术的文章却很难找到。
要编程只有阅读微软公司的英文版文档,这对非计算机专业的教师十分困难。
现对此技术作一最基本的介绍。这里总是假设你已经有VB的基本知识,和TTS技术
关系不大的内容只作简单介绍。
一)建立编程环境
如果是XP操作系统,到我的讨论组 http://kaoke.cnnb.net 文件共享下载
《考客--msTTSXP语音库》和〈考客--msTTS中文语音库〉升级你的msTTS引擎。
98操作系统(由于我没有主页,不能放3M以上文件)到
http://www.smartread.net/cn/service/alldownload.html精灵软件公司
下载 英文语音库(免费)
下载 中文男声语音库(免费)
下载 中文女声语音库单机版(免费500次)。
在安装中可能安装程序不会运行,你需要先下载安装Windows Installer系统
MSI文件是微软最新推出的软件安装格式,安装时必须在你的电脑上有Windows Installer系统,
一般情况下,Windows系统已经内置了Windows Installer。但是如果你双击MSI文件安装时出现错误,
(正确时*.msi文件的图标就象一台电脑)
说明Installer已经损坏,你必须先完成Windows Installer系统安装。Windows 98,ME的用户:InstMsiA.exe
Windows NT4.0,2000 xp的用户:InstMsiW.exe
你到www.sohu.com打入关键字 Windows Installer或InstMsiA 或InstMsiW搜索一下,然后下载安装。
再安装tts语音驱动器。
安装后启动VB,点文件/新建/标准EXE,点工程/引用/浏览 到c:/windos/sYstem 把sapi.dll引用进来,
在microsoft speech object library前面打钩,按确定。但和一般控件不同的是,它在工具箱上并
不显示。
二)设计控件
在form1上放一个timer控件timer1,设置interver=2000
放一个CommonDialog控件CommonDialog1
放一个Label控件Label1
放一个Label控件Label2
放一个Text控件Texten,设置hideselection=false,multline=true,scrollbar=3-both
设计菜单 标题〈打开文本〉名称〈 menu_open_text 〉
菜单 标题〈打开单词〉名称〈 menu_open_word〉
菜单 标题〈关于考客〉名称〈 menu_about〉
三)定义数据类型和变量
Option Explicit
Private Type enl_CNN_TYPE '一个数据类型,用来记录一个单词
ENL As String '英文
CNN As String '中文
End Type
Const DefaultFmt = "SAFT22kHz16BitMono" '输出音频默认值
Dim enl_cnn_WORD(1 To 600) As enl_CNN_TYPE '保存600个单词的数组
Dim speaker_IDX(0 To 20) As Integer
Dim total_WORD As Integer
Dim play_SERIAL As Integer
Dim readTOKEN As Integer
'驱动器实例 讲英语 带事件
Dim WithEvents eVoice As SpVoice
'驱动器实例 讲中文 不带事件
Dim cVoice As SpVoice
四)初始化驱动器
Private Sub Form_Load()
Dim i As Integer
'试图装入msTTS驱动器
'************************************************************
On Error GoTo tts_err:
App.Title = "考客(VER0.00版)"
Dim Token As ISpeechObjectToken
Set eVoice = New SpVoice
Set cVoice = New SpVoice
'设置阅读速度-10到10之间
eVoice.Rate = -1
'初始化标记读者不可用
For i = 0 To 20
speaker_IDX(i) = -1
Next
'读取可以使用的语音
i = 0
For Each Token In eVoice.GetVoices
'以下设置读者可用
If Token.GetDecription() = "Microsoft Mary" Then
speaker_IDX(1) = i
ElseIf Token.GetDecription() = "Microsoft Mike" Then
speaker_IDX(2) = i
ElseIf Token.GetDecription() = "Microsoft Sam" Then
speaker_IDX(3) = i
ElseIf Token.GetDecription() = "Microsoft Simplified Chinese" Then
speaker_IDX(4) = i
ElseIf Token.GetDecription() = "中文女声语音(Ch.Female) [单机版]" Then
speaker_IDX(5) = i
End If
i = i + 1
Next
'优先使用的发音者
If speaker_IDX(1) <> -1 Then
Set eVoice.Voice = eVoice.GetVoices().Item(speaker_IDX(1))
' MsgBox "由玛丽小姐给你阅读!"
ElseIf speaker_IDX(2) <> -1 Then
Set eVoice.Voice = eVoice.GetVoices().Item(speaker_IDX(2))
'MsgBox "由迈克先生给你阅读!"
ElseIf speaker_IDX(3) <> -1 Then
Set eVoice.Voice = eVoice.GetVoices().Item(speaker_IDX(3))
'MsgBox "由山姆大叔给你阅读!"
End If
'优先使用中文的发音者
If speaker_IDX(5) <> -1 Then
Set cVoice.Voice = cVoice.GetVoices().Item(speaker_IDX(5))
ElseIf speaker_IDX(4) <> -1 Then
Set cVoice.Voice = cVoice.GetVoices().Item(speaker_IDX(4))
Else
MsgBox "系统可能没有中文阅读驱动器"
End If
Exit Sub
tts_err:
End Sub
回复:msTTS文字朗读技术 pcgoer 2003年9月3日 [点击:27] (4096字)
五)打开要阅读的文本文件
Private Sub menu_open_text_Click()
Dim fname As String
Dim fno As Integer
On Error GoTo ErrHandler
'-------------------------------------------------------------------------------------
'以下设置打开文件对话框属性
CommonDialog1.CancelError = True
CommonDialog1.DialogTitle = "请选择你要打开的文件"
CommonDialog1.InitDir = App.Path
CommonDialog1.Filter = "文本文件*.txt|*.txt"
CommonDialog1.FileName = "1.TXT"
CommonDialog1.ShowOpen
fname = CommonDialog1.FileName
'判断文件存在性
If Len(Dir$(fname)) = 0 Then
Err.Raise 53 '文件没有找到
End If
Texten.Text = ""
fno = FreeFile()
Open fname For Binary Access Read As #fno
Texten.Text = StrConv(InputB$(LOF(fno), 1), vbUnicode)
Close fno
'停止上一次读
eVoice.Speak vbNullString, SVSFPurgeBeforeSpeak
cVoice.Speak vbNullString, SVSFPurgeBeforeSpeak
'开始读
eVoice.Speak Texten.Text, SVSFlagsAsync
readTOKEN = 1
Me.Caption = App.Title + " " + fname
Exit Sub
ErrHandler:
End Sub
六)打开要阅读的单词文件
Private Sub menu_open_word_Click()
Dim fname, en As String
Dim n, i, fno As Integer
On Error GoTo ErrHandler '捕捉严重错误
CommonDialog1.CancelError = True'以下设置打开文件对话框属性
CommonDialog1.DialogTitle = "请选择要打开的文件!"
CommonDialog1.InitDir = App.Path
CommonDialog1.Filter = "*.txt|*.txt;"
CommonDialog1.DefaultExt = "txt"
CommonDialog1.FileName = "单词第1课A.txt" '默认文件名
CommonDialog1.ShowOpen
fname = CommonDialog1.FileName '从对话框取得文件名
'判断文件存在性
If Len(Dir$(fname)) = 0 Then
Err.Raise 53 '文件没有找到
End If
i = 0
fno = FreeFile '取得自由文件号
Open fname For Input As #fno '以 INPUT 方式打开文件
Do While Not EOF(fno) And i < 600 '把单词文件读到数组
Input #fno, en '读入英文
If en <> "" Then
i = i + 1
enl_cnn_WORD(i).ENL = en
If Not EOF(fno) Then
Input #fno, enl_cnn_WORD(i).CNN
End If
End If
Loop
Close fno
'停止上一次读
eVoice.Speak vbNullString, SVSFPurgeBeforeSpeak
cVoice.Speak vbNullString, SVSFPurgeBeforeSpeak
'单词总数
total_WORD = i
'读第一个单词
play_SERIAL = 1
'播放模式
readTOKEN = 0
Texten.Text = ""
Me.Caption = App.Title + " " + fname
Exit Sub
ErrHandler:
Call MsgBox(Error$, 48)
End Sub
七)阅读单词
Private Sub Timer1_Timer()
Dim readEN, readCN As String
If readTOKEN = 0 Then
If total_WORD > 0 Then
'为了读和显示同步,读空了驱动器队列才读下一句
If (eVoice.Status.RunningState = SRSEDone) And (cVoice.Status.RunningState = SRSEDone) Then
'显示的文本
readEN = enl_cnn_WORD(play_SERIAL).ENL
readCN = enl_cnn_WORD(play_SERIAL).CNN
'读英文
Label1.Caption = readEN
eVoice.Speak readEN, SVSFlagsAsync
'读中文
Label2.Caption = readCN
cVoice.Speak readCN, SVSFlagsAsync
'调整参数
play_SERIAL = play_SERIAL + 1
If play_SERIAL > total_WORD Then
'读完了回到第一个单词再读
play_SERIAL = 1
End If
End If
End If
End If
Exit Sub
ErrHandler:
End Sub
八)自动重复读
Private Sub eVoice_EndStream(ByVal StreamNumber As Long, ByVal StreamPosition As Variant)
'一篇读完触发此事件
On Error GoTo ErrHandler
'读文本
If readTOKEN = 1 Then
eVoice.Speak Texten.Text, SVSFlagsAsync
End If
Exit Sub
ErrHandler:
End Sub
九)高亮度显示当前读文本
Private Sub eVoice_Sentence(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal CharacterPosition As Long, ByVal Length As Long)
'进入一句开始位置触发此事件
On Error GoTo ErrHandler
If readTOKEN = 1 Then
'高亮度显示当前读文本
If Length > 0 Then
Texten.SelStart = CharacterPosition
Texten.SelLength = Length
End If
End If
Exit Sub
ErrHandler:
End Sub
十)版权信息
Private Sub menu_about_Click()
Call MsgBox("浙江省象山县定塘中学" + vbCrLf + "顾熙杰" + vbCrLf + "email:pcgoer@163.net", 48)
End Sub
十一)感兴趣的教师请到http://kaoke.cnnb.net下载《考客0.00版》源代码。
定塘中学 顾熙杰
pcgoer@163.net
17 楼
帅哥阳伞 [专家分:16530] 发布于 2005-04-07 14:25:00
中文语音识别引擎下载路径
下载地址一
www.ie5.net/speechsoft/Untitled.MSI (纯中文词库48.1M)
下载地址二
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51LangPack.exe (中日文词库81M)
说明:以上安装文件是msi格式的文件,MSI文件是微软最新推出的软件安装格式,安装时必须在你的电脑上有Windows Installer系统,一般情况下,Windows系统已经内置了Windows Installer。但是如果你双击MSI文件安装时出现错误,说明Installer已经损坏,你必须到下列网址下载相应的驱动包,完成Windows Installer系统安装。
windows98、ME的用户到以下地址下载:
http://www.ie5.net/speechsoft/install for win98/instmsia.exe
windows2000的用户到以下地址下载:
http://www.ie5.net/speechsoft/install for winxp/instmsiw.exe
安装了以上的中文语音识别引擎后就可以用了,你可以下载电脑精灵II这个是本人的软件.免费的,还可以语音打字呢.准确率90%以上.
18 楼
帅哥阳伞 [专家分:16530] 发布于 2005-04-07 14:27:00
中文语音识别引擎下载路径
下载地址一
www.ie5.net/speechsoft/Untitled.MSI (纯中文词库48.1M)
下载地址二
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51LangPack.exe (中日文词库81M)
说明:以上安装文件是msi格式的文件,MSI文件是微软最新推出的软件安装格式,安装时必须在你的电脑上有Windows Installer系统,一般情况下,Windows系统已经内置了Windows Installer。但是如果你双击MSI文件安装时出现错误,说明Installer已经损坏,你必须到下列网址下载相应的驱动包,完成Windows Installer系统安装。
windows98、ME的用户到以下地址下载:
http://www.ie5.net/speechsoft/install for win98/instmsia.exe
windows2000的用户到以下地址下载:
http://www.ie5.net/speechsoft/install for winxp/instmsiw.exe
安装了以上的中文语音识别引擎后,你再下载电脑精灵II(这个是本人的作品)免费的,里面不仅可以中英文朗读,还可以语音录入文字,正确率90%以上.
19 楼
帅哥阳伞 [专家分:16530] 发布于 2005-04-07 14:27:00
中文语音识别引擎下载路径
下载地址一
www.ie5.net/speechsoft/Untitled.MSI (纯中文词库48.1M)
下载地址二
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51LangPack.exe (中日文词库81M)
说明:以上安装文件是msi格式的文件,MSI文件是微软最新推出的软件安装格式,安装时必须在你的电脑上有Windows Installer系统,一般情况下,Windows系统已经内置了Windows Installer。但是如果你双击MSI文件安装时出现错误,说明Installer已经损坏,你必须到下列网址下载相应的驱动包,完成Windows Installer系统安装。
windows98、ME的用户到以下地址下载:
http://www.ie5.net/speechsoft/install for win98/instmsia.exe
windows2000的用户到以下地址下载:
http://www.ie5.net/speechsoft/install for winxp/instmsiw.exe
安装了以上的中文语音识别引擎后,你再下载电脑精灵II(这个是本人的作品)免费的,里面不仅可以中英文朗读,还可以语音录入文字,正确率90%以上.
我来回复