如何让 Windows 在整点时读出时间

如何让 Windows 在整点时读出时间

自 Windows XP 以来,所有版本的 Windows 操作系统都安装了“讲述人”。

它可以被编程为在应用程序中说话。

有一个简单的 VBscript 方法可以让它在程序控制下说出一些事情,比如如果它收到一个文件,指示其中一个数据记录器的电压太低,Python 就会大声说出来,如下所示:

import os
etc
os.exec("c:/users/Admin/python/lowvolt.vbs")

看起来lowvolt.vbs像这样:

Dim sez, speech
sez = "Low Voltage on 24"
Set speech = CreateObject("sapi.spvoice")
speech.Speak sez
Wscript.Quit

效果非常好。

(您可以看到输入绘制这里


让它在每个整点时报出时间会很有帮助。

问题就在标题中——如何做到这一点?

答案1

创建一个名为saytime.vbs

Dim speech, hr, sez
hr=hour(time)
if hr=0 then
    hr = 12
end if
if hr>12 then
   hr = hr - 12
end if
sez = hr & " O'clock"
Set speech = CreateObject("sapi.spvoice")
speech.Speak sez
Wscript.Quit

然后设置计划任务来运行它。

  • 打开任务计划程序 - 单击“开始”,输入“scheduler”,然后按 Enter

  • 在右侧窗格中,单击“创建任务...”

  • 给它起一个名字 - 也许是“说时间” - 下面你会看到安全选项默认仅在当前用户登录时运行。

  • 选择(单击)“触发器”选项卡,然后单击“新建...”按钮 - 它将被设置为一次。

  • 修改开始时间,使时间看起来像:12:00:00,以使其在每个小时的开始时触发。

  • 选中“每隔 1 小时重复任务”复选框 - 将其设置为 1 小时,持续时间为无限期。

  • 勾选“如果任务运行时间超过则停止”并将其设置为 30 分钟

  • 单击“确定”

  • 单击“操作”选项卡,然后单击“新建...”按钮 - 它将打开,并将操作设置为启动程序。

  • 浏览到您的saytime.vbs文件

  • 单击“确定”,然后单击“确定”

  • 现在,在左侧单击“任务计划程序库”

  • 找到您的新条目,右键单击它,然后单击运行

当你听到语音说出时间时,你就知道任务正在进行。
你还可以查看触发条件。

至此,您的设置已完成。

瞧瞧——你的电脑就会说出小时数了。


请注意,讲述人会设置您将听到的实际声音。它有几个内置的男声和女声选项。

设置“讲述人”语音选项(微软)

有多种方法可以下载更多适用于讲述人的声音:

获得更多 Microsoft 文本转语音声音(Superuser.com)

您可以使用的最佳免费 Windows 讲述人声音(Zero2000.com)


我已经将我的 Windows 和 Ubuntu 机器都设置为主时钟,并教会它们说话。听到它们同时报时非常令人欣慰:

https://askubuntu.com/questions/972799/how-do-i-set-ubuntu-to-use-the-primary-time-server-time-nist-gov/972800#972800

https://askubuntu.com/questions/977613/16-04-lts-how-to-make-the-system-announce-the-time-at-the-top-of-the-hour-with-e


此外,对于 VBscript 的粉丝来说,这是一个可以在程序控制下播放 MP3 文件的 VBS 脚本的链接:

https://stackoverflow.com/questions/1569765/how-to-play-audio-file-on-windows-from-command-line/18165191#18165191

答案2

很棒的脚本,谢谢!我稍微修改了一下脚本,加入了上午/下午和分钟公告,这样你就可以随时运行它了:

Dim speech, hr, sez, mt, pm
hr=hour(time)
mt=minute(time)
pm="pea em"
if hr=0 then
    hr = 12
elseif hr>12 then
    hr = hr - 12
elseif hr < 12 then
    pm="ay em"
end if
if mt=0 then
  sez = "It's " & hr & " " & pm
elseif mt < 10 then
  sez = "It's " & hr & " oh " & mt & " " & pm
else
  sez = "It's " & hr & " " & mt & " " & pm
end if
Set speech = CreateObject("sapi.spvoice")
speech.Speak sez
Wscript.Quit

相关内容