TTS(Text to Speech ,文本到语音) 是什么?相信既然你已经找到这篇文章,那么你就会对 TTS 有一定的了解,当然,这里有 TTS 的一些更多的资料(http://b.baidu.com/view/66087.htm)。
那么如何在程序中实现 TTS 功能呢?其实很简单,由于 Microsoft Speech SDK 已包括相关组件,那么我们只要调用再加以相应的编程就可以实现。这里我已经为大家准备好了这个组件:DotNetSpeech.dll,点击下载。
下载下来,然后在程序中添加对该组件的引用。接下来,来进行相关编码:
Imports DotNetSpeech
''' <summary>
''' 语音发声引擎
''' </summary>
''' <remarks></remarks>
Public Class SpeechEngine
'定义相关变量
Private spFlags As SpeechVoiceSpeakFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync
Private voice As New SpVoice()
Private speakOT As ISpeechObjectToken
..........
''' <summary>
''' 读文本
''' </summary>
''' <param name="speakText">要读的文本</param>
''' <param name="roleID">发音者角色 ID</param>
''' <param name="volume">音量 (0~100)</param>
''' <param name="rate">速率 (-10~10)</param>
''' <remarks></remarks>
Public Sub Speak(ByVal speakText As String, _
Optional ByVal roleID As Integer = 0, _
Optional ByVal volume As Integer = 100, _
Optional ByVal rate As Integer = 0)
Try
'设置发音的一些属性
voice.Voice = voice.GetVoices.Item(roleID)
voice.Rate = rate
voice.Volume = volume
'开始读
voice.Speak(speakText, spFlags)
Catch ex As Exception
........
End Try
End Sub
可以看出来,该组件在读取文本时支持不同的发音角色、不同的音量、以及不同的速率。只要在您的程序中调用该方法,即可实现发音功能。需要说明的是:发音角色。打开“控件面板”中的“语音”,在该对话框中的“Voice Selection”(我的系统是英文版)处显示了该机中目前已安装的发音角色:

那么如何获取到它们的名称呢?这里就需要用到 ISpeechObjectToken 对象:
''' <summary>
''' 获取计算机上现在的发音者的名称
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetSpeakerNames() As String()
Dim names() As String
Dim speakerCount As Integer = _
voice.GetVoices(String.Empty, String.Empty).Count
Dim sot As ISpeechObjectToken
ReDim names(speakerCount) '重新定义该字符串数组
Try
For i As Integer = 0 To speakerCount - 1
speakOT = voice.GetVoices(String.Empty, String.Empty).Item(i)
sot = voice.GetVoices(String.Empty, String.Empty).Item(i)
names(i) = sot.GetAttribute("Name")
Next
Return names
Catch ex As Exception
Common.WriteErrorLog(ex)
Return Nothing
End Try
End Function
那么前文中提到的发音者 ID 又是什么呢?它就是某个发音角号在上图列表中的位置(从 0 开始)。默认情况下,Windows 系统安装后,只提供了一个发音角色,如果有需要可以到网上下载其它角色,如 Microsoft 的 MikeAndMary 等,此外,也有中文发音角色提供下载,这样,通过这个发音角色就可以读出中文。
好了,现在您是不是已经对 TTS 的实现有了初步的掌握了呢?如果您在阅读本文时有什么疑问或者更好的方法,请回复我哦。