必须使用windows原生speechsynthesis api与task scheduler联动,配合outlook桌面版调用本地powershell脚本实现离线日历语音提醒;需启用remotesigned策略、保存.ps1脚本并配置outlook事件的“运行程序”提醒。

要在没有网络连接的电脑上实现日历事件的语音提醒,必须绕过依赖云端服务的常规方案,转而使用本地可执行的语音合成引擎与系统级定时任务联动。Windows 自带的 SpeechSynthesis API 和 Task Scheduler 完全离线运行,无需联网即可触发 TTS 朗读,这是唯一满足“无网络+语音+日历提醒”三要素的原生路径。
准备本地语音引擎与提醒脚本
打开记事本,粘贴以下 PowerShell 脚本内容(注意:必须保存为 .ps1 后缀):
```powershell
$event = $args[0]
$speaker = New-Object -ComObject SAPI.SpVoice
$speaker.Rate = 0
$speaker.Volume = 100
$speaker.Speak("提醒:$event")
```
将文件命名为 【alert.ps1】,保存到一个固定路径,例如 C:\Scripts\alert.ps1。这一步不可跳过——PowerShell 默认禁止执行本地脚本,必须提前启用策略。
以管理员身份运行 PowerShell,执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
不执行此命令会导致双击脚本时直接报错退出,且不会有任何语音输出。
创建离线日历事件并绑定提醒
Windows 自带“日历”应用本身不支持调用本地脚本,因此需改用 Outlook 桌面客户端(Outlook 2016 及以上,含 Microsoft 365 桌面版)。
在 Outlook 中新建日历事件 → 填写主题、时间 → 点击“提醒”下拉框 → 选择“自定义” → 在弹出窗口中点击“高级”选项卡 → 勾选“运行程序” → 点击“浏览”,定位到刚才保存的 C:\Scripts\alert.ps1 → 在“参数”栏输入你要朗读的提醒内容,例如:
"下午3点客户电话会议"
保存事件后,Outlook 会在设定时间自动调用 PowerShell 执行该脚本,全程不发任何网络请求。
验证与强制触发测试
方法一:手动运行脚本测试语音是否正常
右键 alert.ps1 → 选择“使用 PowerShell 运行” → 听语音是否清晰播放。
方法二:在 Outlook 日历中右键刚建的事件 → “立即提醒” → 若语音响起,说明整个链路已通。
方法三:临时把电脑断网(拔网线或禁用 Wi-Fi),再等待提醒时间到达,确认语音仍能准时触发。
若断网后无语音,请检查 Outlook 是否以“桌面版”运行——网页版 Outlook(Outlook on the web)完全无法执行本地程序,此限制不可绕过。











