繁体   English   中英

Vb.net使用文件中的语音将文本转换为语音?

[英]Vb.net text to speech using voice from file?

我已经制作了一个简单的程序,该程序使用sapi 5来说出用户输入的任何内容,但是我想使用保存在程序目录中的语音,这可能吗? 我以前见过c ++程序可以做到这一点,但我不确定在Visual Basic中如何实现这一点。

如果我错了,请纠正我,但是您要尝试做的似乎是录制您的应用产生的声音,然后作为步骤2,将其识别回文本。

要解决录音问题 ,您需要使用声卡的输入和磁盘上的wav文件输出来组成Direct Show过滤器图。 作为VB开发人员,您应该能够使用不推荐使用的ManagedDX或类似的包装器来实现此目的。

之后要处理TTS ,您需要将此文件提供给某些识别API,例如Bing Speech API

这两个主题都应分别使用Google搜寻和堆栈溢出。

我有一个旧项目,它是用VB6编写的,而且可以将语音时间转化为语音,也许您可​​以从中得到一些好处,我不知道。

Private Declare Function SndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Dim p As String
Dim sound(1 To 59) As String
Dim at As String
Dim minutes As String
Dim over As String

Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim index As Integer

SndPlaySound at, 0

a = Val(Mid$(Time$, 1, 2))
b = Val(Mid$(Time$, 4, 2))

If b = 0 Then
    If a > 0 And a <= 12 Then
        SndPlaySound sound(a), 0
    Else
        SndPlaySound sound(a - 12), 0
    End If
    Exit Sub
End If

SndPlaySound sound(a), 0
SndPlaySound over, 0
SndPlaySound sound(b), 0
SndPlaySound minutes, 0
End Sub

Private Sub Timer1_Timer()
Label1 = Time$
End Sub

Private Sub Form_Load()
Label1 = Time$
p = App.Path + "\Sound\"
Speak
End Sub

Private Sub Speak()
at = p + "at.wav"
over = p + "over.wav"
minutes = p + "minutes.wav"
sound(1) = p + "1.wav"
sound(2) = p + "2.wav"
sound(3) = p + "3.wav"
sound(4) = p + "4.wav"
sound(5) = p + "5.wav"
sound(6) = p + "6.wav"
sound(7) = p + "7.wav"
sound(8) = p + "8.wav"
sound(9) = p + "9.wav"
sound(10) = p + "10.wav"
sound(11) = p + "11.wav"
sound(12) = p + "12.wav"
sound(13) = p + "13.wav"
sound(14) = p + "14.wav"
sound(15) = p + "15.wav"
sound(16) = p + "16.wav"
sound(17) = p + "17.wav"
sound(18) = p + "18.wav"
sound(19) = p + "19.wav"
sound(20) = p + "20.wav"
sound(21) = p + "21.wav"
sound(22) = p + "22.wav"
sound(23) = p + "23.wav"
sound(24) = p + "24.wav"
sound(25) = p + "25.wav"
sound(26) = p + "26.wav"
sound(27) = p + "27.wav"
sound(28) = p + "28.wav"
sound(29) = p + "29.wav"
sound(30) = p + "30.wav"
sound(31) = p + "31.wav"
sound(32) = p + "32.wav"
sound(33) = p + "33.wav"
sound(34) = p + "34.wav"
sound(35) = p + "35.wav"
sound(36) = p + "36.wav"
sound(37) = p + "37.wav"
sound(38) = p + "38.wav"
sound(39) = p + "39.wav"
sound(40) = p + "40.wav"
sound(41) = p + "41.wav"
sound(42) = p + "42.wav"
sound(43) = p + "43.wav"
sound(44) = p + "44.wav"
sound(45) = p + "45.wav"
sound(46) = p + "46.wav"
sound(47) = p + "47.wav"
sound(48) = p + "48.wav"
sound(49) = p + "49.wav"
sound(50) = p + "50.wav"
sound(51) = p + "51.wav"
sound(52) = p + "52.wav"
sound(53) = p + "53.wav"
sound(54) = p + "54.wav"
sound(55) = p + "55.wav"
sound(56) = p + "56.wav"
sound(57) = p + "57.wav"
sound(58) = p + "58.wav"
sound(59) = p + "59.wav"
End Sub

这不是最好的方法,但似乎是我所能找到的唯一方法,您可以在CircumReality上搜索它,它是由某人创建的游戏,它使用文本进行语音表达,开发人员很好地包括了允许您发出声音的工具并安装.tts文件。

只需下载CircumReality并安装它,然后进入程序目录并从此处打开MNLP.exe,您应该可以选择从文件安装tts语音。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM