Как заставить Windows говорить время в верхней части часа

Начиная с Windows XP, во всех версиях ОС Windows установлен Narrator.

Это может быть запрограммировано, чтобы говорить в приложениях.

Существует простой метод 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

Который прекрасно работает.

(Вы можете увидеть входные данные, построенные ЗДЕСЬ)


Было бы полезно, чтобы он также объявлял время в начале каждого часа.

Вопрос в заголовке - как это сделать?

2 ответа

Решение

Создайте текстовый файл VBscript с именем 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

Затем настройте запланированное задание для его запуска.

  • Откройте Task Scheduler - нажмите Start, введите "scheduler", затем нажмите enter

  • На правой панели нажмите "Создать задачу..."

  • Дайте ему имя - возможно, "Say Time" - ниже, что вы увидите параметры безопасности по умолчанию, при которых он запускается только тогда, когда текущий пользователь вошел в систему.

  • Выберите (щелкните) на вкладке "Триггеры", затем кнопку "Создать..." - она ​​будет установлена ​​на Один раз.

  • Измените Время начала так, чтобы время выглядело как: 12:00:00, чтобы оно срабатывало в верхней части каждого часа.

  • Установите флажок "Повторять задачу каждый" - установите его на 1 час и на неопределенный срок.

  • Установите флажок "Остановить задачу, если она выполняется дольше, чем", и установите для нее значение 30 минут.

  • Нажмите ОК

  • Перейдите на вкладку "Действия", затем нажмите кнопку "Создать..." - откроется с действием, установленным для запуска программы.

  • Перейдите к вашему saytime.vbs файл

  • Нажмите ОК, затем ОК

  • Теперь с левой стороны нажмите "Библиотека планировщика заданий".

  • Найдите новую запись, щелкните ее правой кнопкой мыши и выберите "Выполнить".

Когда вы слышите голос, говорите время, когда вы знаете, что задание работает.
Вы также можете увидеть условия запуска.

На этом этапе ваша настройка завершена.

Вуаля - ваш компьютер будет говорить час.


Обратите внимание, что Рассказчик устанавливает реальный голос, который вы услышите. Он имеет несколько встроенных опций для мужских и женских голосов.

Чтобы настроить параметры голоса диктора (Microsoft)

Есть методы для загрузки большего количества голосов, которые будут работать с Рассказчиком:

Получите больше голоса Microsoft для преобразования текста в речь (Usersuper.ru)

Лучшие бесплатные голоса Windows Narrator, которые вы можете использовать (Zero2000.com)


Я настроил свои машины Windows и Ubuntu так, чтобы все они были настроены на Master Clock, и научил их говорить. Слышать, как они объявляют время одновременно, очень приятно:

https://askubuntu.com/questions/972799/how-do-i-set-ubuntu-to-use-the-primary-time-server-time-nist-gov/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 это ссылка на сценарий VBS, который может воспроизводить файлы MP3 под управлением программы:

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

Гениальный сценарий, спасибо! Я немного модифицировал сценарий, включив в него объявления об утреннем/вечернем и минутном сообщениях, чтобы вы могли запускать его в любое время:

      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
Другие вопросы по тегам