使用VBS从文件中读取并说出内容

时间:2017-10-04 14:00:59

标签: file vbscript text-to-speech

我正在处理一个项目,我正在写一个来自另一个文件的文件,但我想要一个.VBS文件来说它像TTS一样。这是代码......但是

Dim message, sapi
Set sapi=CreateObject("This Text") 
sapi.Speak message

然后单词" This Text"将来自发言者。

但是,我不想要这些文字" This Text"出来,我希望它说出.txt文件中的单词(tts_text.txt)

因此需要读取文本文件并将其存储在变量中,然后tts应该读取并说出变量。

2 个答案:

答案 0 :(得分:1)

使用它来阅读/了解对象及其功能:

Option Explicit
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim goVC : Set goVC = CreateObject("SAPI.SpVoice")
goVC.Speak goFS.OpenTextFile(WScript.ScriptFullName).ReadAll()

答案 1 :(得分:0)

您可以试试这个vbscript示例:

Option Explicit
Dim Contents,File,message
File = "c:\tts_text.txt"
Contents = "It didn’t work after mass shootings at a nightclub in Orlando,"&_
"college campuses in Virginia and Oregon, a church in Charleston,"&_
"or at a movie theater and high school in Colorado."&_
"Or after two lawmakers survived assassination attempts." & vbcrlf &_
"But after a gunman killed 58 people and wounded more than 500 at a Las Vegas concert," & vbcrlf &_
"Democrats are going to try again to revamp the nation’s gun laws."
' We write this contents to the file
WriteTextFile Contents, file, 0
' We read the file contents and we store it into a variable message
message = ReadFileText(File)
' Now we can speak this message with SAPI object
Speak_from_File message
'**********************************************************
Sub Speak_from_File(message)
Dim Voice
Set Voice = CreateObject("SAPI.SpVoice")
Voice.Volume = 100
Voice.Rate = 0
Voice.Speak message
End Sub
'**********************************************************
Sub WriteTextFile(sContent, sPath, lFormat)
'lFormat -2 - System default, -1 - Unicode, 0 - ASCII
With CreateObject("Scripting.FileSystemObject").OpenTextFile(sPath,2,True,lFormat)
    .WriteLine sContent
    .Close
End With
End Sub
'**********************************************************
Function ReadFileText(sFile)
    Dim objFSO,oTS,sText
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set oTS = objFSO.OpenTextFile(sFile,1)
    sText = oTS.ReadAll
    oTS.close
    set oTS = nothing
    Set objFSO = nothing
    ReadFileText = sText
End Function 
'**********************************************************
相关问题