Board logo

标题: [技术讨论] 文本语音朗读VBS脚本 [打印本页]

作者: 牛虻    时间: 2014-9-26 16:15     标题: 文本语音朗读VBS脚本

文本语音朗读脚本
  1. Set objSpk = Createobject("SAPI.SpVoice")
  2. objSpk.speak("北京欢迎你")
复制代码

作者: 牛虻    时间: 2014-9-26 16:25

能不能发出 do ruai mi fa sao la xi的声音
这样也许就可以唱歌了
作者: 523066680    时间: 2014-9-26 17:23

结果就是哆啦咪发骚拉稀,如果你要控制蜂鸣器的音调还比较有的搞。
作者: 牛虻    时间: 2014-9-28 10:06

我试了,结果不对。你说控制蜂鸣器的音调,怎么弄?
作者: yu2n    时间: 2014-9-28 13:57

Beep 周杰伦-回到过去
  1. Option Explicit
  2. ' 获取 Excel 对象
  3. Dim oExcel, oBook
  4. Set oExcel = Excel_Init
  5. Set oBook = oExcel.ActiveWorkbook
  6. '提示非台式机用户选择是否继续
  7. If LCase(ChassisType()) <> LCase("Desktop") Then
  8.   If CreateObject("WScript.Shell").Popup(_
  9.     "你的电脑不是台式机(桌面计算机),将会导致扬声器发出较大的噪声,请注意调小音量!" & VbCrLf & VbCrLf & _
  10.     "退出程序,请按“确定”,否则请按“取消”。(7秒后自动取消)", 7, "警告", 48+4096+1) = 1 Then
  11.     WScript.Quit
  12.   End If
  13. End If
  14. '内存报警实例
  15. CreateObject("WScript.Shell").Popup "稍等2秒,即将播放BIOS内存报警声……   " , 2, "提示", 64+4096+0
  16. Beep 880, 600: Sleep 200  '內存
  17. Beep 880, 200: Sleep 200
  18. Beep 880, 200: Sleep 200
  19. '//do~si 节奏数据来自VBS吧
  20. CreateObject("WScript.Shell").Popup "稍等2秒,即将播放so~si音阶……     " , 2, "提示", 64+4096+0
  21. playsnd 440, 100
  22. playsnd 494, 100
  23. playsnd 554, 100
  24. playsnd 622, 100
  25. playsnd 698, 100
  26. playsnd 784, 100
  27. playsnd 880, 100
  28. '//周杰伦的回到过去 节奏数据来自VBS吧
  29. CreateObject("WScript.Shell").Popup "稍等2秒,即将播放《周杰伦-回到过去》……" , 2, "提示", 64+4096+0
  30. playsnd 587, 100: playsnd 784, 100: playsnd 880, 100: playsnd 988, 100:: playsnd 988, 200: playsnd 0, 100
  31. playsnd 988, 100: playsnd 880, 100: playsnd 988, 100: playsnd 1047, 200: playsnd 988, 100: playsnd 988, 100
  32. playsnd 880, 100: playsnd 100, 150: playsnd 880, 100: playsnd 784, 100:: playsnd 988, 100: playsnd 0, (5)
  33. playsnd 988, 100: playsnd 0, (5)::: playsnd 988, 100: playsnd 0, (5):::: playsnd 988, 100: playsnd 880, 100
  34. playsnd 784, 100: playsnd 740, 100: playsnd 784, 200: playsnd 100, 200:: playsnd 784, 100: playsnd 880, 100
  35. playsnd 784, 100: playsnd 988, 100: playsnd 0, (5)::: playsnd 988, 100:: playsnd 0, (5)::: playsnd 988, 100
  36. playsnd 0, (5)::: playsnd 988, 100: playsnd 100, 100: playsnd 587, 100:: playsnd 784, 100: playsnd 1175, 100
  37. playsnd 0, (5)::: playsnd 1175, 99: playsnd 988, 100: playsnd 0, (5):::: playsnd 988, 100: playsnd 0, (5)
  38. playsnd 987, 100: playsnd 100, 100: playsnd 784, 100: playsnd 0, (5):::: playsnd 784, 100: playsnd 880, 200
  39. playsnd 784, 100: playsnd 0, (5)::: playsnd 784, 100: playsnd 0, (5):::: playsnd 784, 50:: playsnd 659, (50)
  40. playsnd 784, 100: playsnd 659, 100: playsnd 784, 100: playsnd 880, 100:: playsnd 100, 100: playsnd 587, 110
  41. playsnd 784, 120: playsnd 880, 130: playsnd 740, 140: playsnd 784, 200:: playsnd 1, 1::::: playsnd 1, 1
  42. ' 关闭 Excel
  43. Excel_Quit
  44. WScript.Quit
  45. Function Excel_Init()
  46.   Dim WshShell
  47.   Dim oExcel, oBook, oModule
  48.   Dim strRegKey, strCode
  49.   Set oExcel = CreateObject("Excel.Application")
  50.   set WshShell = CreateObject("WScript.Shell")
  51.   strRegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\$\Excel\Security\AccessVBOM"
  52.   strRegKey = Replace(strRegKey, "$", oExcel.Version)
  53.   WshShell.RegWrite strRegKey, 1, "REG_DWORD"
  54.   Set oBook = oExcel.Workbooks.Add
  55.   Set oModule = obook.VBProject.VBComponents.Add(1)
  56.   strCode = _
  57.   "Declare Sub Beep Lib ""kernel32"" (ByVal fre As Long, ByVal ms As Long)" & vbCr & _
  58.   "Declare Sub Sleep Lib ""kernel32"" (ByVal ms As Long)"
  59.   oModule.CodeModule.AddFromString strCode
  60.   Set Excel_Init = oExcel
  61. End Function
  62. Function playsnd(ByVal x, ByVal y)
  63.   Beep x, y * 3
  64. End Function
  65. Sub Beep(fre,ms)
  66.   oExcel.Run "Beep",fre,ms
  67. End Sub
  68. Sub Sleep(ms)
  69.   oExcel.Run "Sleep",ms
  70. End Sub
  71. Function Excel_Quit()
  72.   oExcel.DisplayAlerts = False
  73.   'oBook.Close
  74.   oExcel.ActiveWorkbook.Close
  75.   oExcel.Quit
  76. End Function
  77. '判断计算机类型,只允许台式机发声(笔记本会使用扬声器发声,声音太刺耳)
  78. Function ChassisType()
  79.   Dim strComputer, objWMIService, colChassis, objChassis, strChassisType
  80.   strComputer = "."
  81.   Set objWMIService = GetObject("winmgmts:" _
  82.               & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  83.   Set colChassis = objWMIService.ExecQuery _
  84.               ("Select * from Win32_SystemEnclosure")
  85.   For Each objChassis in colChassis
  86.     For Each strChassisType in objChassis.ChassisTypes
  87.       Select Case strChassisType
  88.         Case 1
  89.           ChassisType = "Other"
  90.         Case 2
  91.           ChassisType = "Unknown"
  92.         Case 3
  93.           ChassisType = "Desktop"
  94.         Case 4
  95.           ChassisType = "Low Profile Desktop"
  96.         Case 5
  97.           ChassisType = "Pizza Box"
  98.         Case 6
  99.           ChassisType = "Mini Tower"
  100.         Case 7
  101.           ChassisType = "Tower"
  102.         Case 8
  103.           ChassisType = "Portable"
  104.         Case 9
  105.           ChassisType = "Laptop"
  106.         Case 10
  107.           ChassisType = "Notebook"
  108.         Case 11
  109.           ChassisType = "Handheld"
  110.         Case 12
  111.           ChassisType = "Docking Station"
  112.         Case 13
  113.           ChassisType = "All-in-One"
  114.         Case 14
  115.           ChassisType = "Sub-Notebook"
  116.         Case 15
  117.           ChassisType = "Space Saving"
  118.         Case 16
  119.           ChassisType = "Lunch Box"
  120.         Case 17
  121.           ChassisType = "Main System Chassis"
  122.         Case 18
  123.           ChassisType = "Expansion Chassis"
  124.         Case 19
  125.           ChassisType = "Sub-Chassis"
  126.         Case 20
  127.           ChassisType = "Bus Expansion Chassis"
  128.         Case 21
  129.           ChassisType = "Peripheral Chassis"
  130.         Case 22
  131.           ChassisType = "Storage Chassis"
  132.         Case 23
  133.           ChassisType = "Rack Mount Chassis"
  134.         Case 24
  135.           ChassisType = "Sealed-Case PC"
  136.         Case Else
  137.           ChassisType = "Unknown"
  138.       End Select
  139.     Next
  140.   Next
  141. End Function
复制代码

作者: 牛虻    时间: 2014-9-28 14:04

我突然又想到是不是可以写个类似学舌猫一样的脚本啊
作者: 牛虻    时间: 2014-9-28 15:01

回复 5# yu2n


    不对啊!我运行报错 !
作者: yu2n    时间: 2014-9-28 15:27

回复 7# 牛虻
直接点代码下面那个【复制代码】按钮试试……
作者: 牛虻    时间: 2014-9-28 16:29

本帖最后由 牛虻 于 2014-9-28 16:34 编辑

回复 8# yu2n


    我就是这样复制的
我在第二行加上on error resume next后有弹窗,没声音
作者: 牛虻    时间: 2014-9-28 16:37

问一下playsnd  是什么?
作者: 牛虻    时间: 2014-9-28 16:49

回复 8# yu2n


   这一行出错 Set oModule = obook.VBProject.VBComponents.Add(1)
作者: yu2n    时间: 2014-9-28 19:48

回复 11# 牛虻
具体原因不清楚,猜测可能与杀毒软件有关。
作者: Linuxer    时间: 2014-9-28 23:44

回复 6# 牛虻


    读出声音简单,但是要按你的想法,汤姆猫那种,,,是(相当)^n的有难度。。。。不建议研究。。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2