使用TTS告诉用户秒表何时到达特定时间

时间:2015-09-19 14:35:01

标签: c#

我已经为工作编写了一个简单的秒表应用程序,我的老板希望它在你达到某个时间时告诉你,即在15分钟时说“已经过了15分钟。”,在30分钟时说“已经过了30分钟”。 “等等。我已经在网上查看了TTS的实现,但是我在如何将其实现到我现有的应用程序中是一个空白。我相信我对它的运作方式有了很好的理解,但正如之前所提到的,我在如何将它集成到我的应用程序中的空白。该应用程序是一个Windows窗体应用程序。任何援助将不胜感激。

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace CiscoSw
{
    public partial class SwForm : Form
    {


        private readonly Stopwatch _sw = new Stopwatch();

        public SwForm()
        {
            InitializeComponent();
            startBtn.Text = @"Start";
            UpdateDisplay();
        }

        private void SwForm_Load(object sender, EventArgs e)
        {
            currentTimeUtc.Start();
        }

        private void startBtn_Click(object sender, EventArgs e)
        {
            if (!_sw.IsRunning)
            {
                _sw.Start();
                stopwatchTimer.Start();
                startBtn.Text = @"Stop";
                UpdateDisplay();
            }
            else
            {
                _sw.Stop();
                stopwatchTimer.Stop();
                startBtn.Text = @"Start";
            }
        }

        private void resetBtn_Click(object sender, EventArgs e)
        {
            if (_sw.IsRunning)
            {
                _sw.Restart();
            }
            else
            {
                _sw.Reset();
            }
            UpdateDisplay();
        }

        private void stopwatchTimer_Tick(object sender, EventArgs e)
        {
            UpdateDisplay();
        }

        private void UpdateDisplay()
        {
            stopwatchTimeLabel.Text =
                $"{_sw.Elapsed.Hours.ToString("00")}:{_sw.Elapsed.Minutes.ToString("00")}:{_sw.Elapsed.Seconds.ToString("00")}";
        }

        private void currentTimeUtc_Tick(object sender, EventArgs e)
            {
            DateTime timenow = DateTime.UtcNow;
            displayCurrentTime.Text = $"{timenow:M/d/yyyy   HHmm Zulu}";
        }

    }

}

1 个答案:

答案 0 :(得分:0)

在项目中引用以下程序集:

System.Speech.dll 

在更新显示中,您必须检查间隔(15米,30米)并执行TTS。为此,您需要实现以下内容:

using System.Speech.Synthesis;

var synthesizer = new SpeechSynthesizer(); // create this only once for reuse

synthesizer.Speak("the time interval that has lapsed"); 

如果您的计算机上未安装Microsoft Speech,则可以下载here

您可以转到:

配置语音识别和TTS(语音等)
Control Panel\All Control Panel Items\Speech Recognition