回 帖 发 新 帖 刷新版面

主题:如果设置中文语音

Win2K里面有一个发音控件,能够发出英文语音,怎样能够发出中文语音?

回复列表 (共19个回复)

11 楼

再工程菜单 引用 microsoft speech library 才可以写程序 这是微软的新技术 没有你所说的vtext.languageid
具体可以 到 http://www.vbsky.net 搜索 “tts”

12 楼

我也是看到那里的例子,才作出来的

13 楼

该如何在程序中设置语言类型呢?

14 楼

WWW.VBSKY.NET好象打不开啊!

15 楼

    是  http://www.vb-code.net/bbs/index.htm
      不好意思先前说错了

16 楼

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 楼

中文语音识别引擎下载路径
下载地址一
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 楼

中文语音识别引擎下载路径
下载地址一
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 楼

中文语音识别引擎下载路径
下载地址一
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%以上.

我来回复

您尚未登录,请登录后再回复。点此登录或注册