Workshop-Timer Sprachausgabe Upgrade

Workshop Timer mit Sprachausgabe

Mit der Speech API hat es Microsoft Entwicklern sehr einfach gemacht, eine Sprachausgabe in eigene Software zu integrieren. Wie das am Beispiel eines Workshop oder Meeting Timers aussehen kann, erfahren Sie in diesem Artikel.

Microsoft Speech API

Die Bibliothek kann in allen Microsoft Office Anwendungen über VBA verwendet werden.  Sie ist zwar schon ziemlich alt, funktioniert aber auch unter Windows 10. Der große Funktionsumfang von Sprachausgabe bis zur Spracherkennung kling am Anfang sehr komplex – und er ist es auch.

Soll aber nur eine Sprachausgabe erfolgen, sind die notwendigen Funktionen einfach zu integrieren. Das ist neben Microsoft Produktion, auch mit anderen Programmiersprachen, wie Lazarus oder Delphi möglich.

Ich möchte in diesem Artikel zeigen, wie eine einfache Sprachausgabe realisiert wird. Mein Beispiel ist ein Workshop-Timer. Der Timer zählt einen Count-Down von einer beliebigen Startdauer auf 0 Sekunden. Das soll jetzt durch eine zusätzliche Sprachausgabe verbessert werden.

Software-Tools
Software-Tool: Workshop-Timer mit Sprachausgabe

Einbau im Lazarus-Projekt

Die Bibliothek wird über ein OLE-Objekt eingebunden. Deshalb muss in der uses-Anweisung die Unit ComObj aufgenommen werden.

uses
  Classes, SysUtils, ... ComObj;

Der Bezeichner SpVoice, für das Objekt der Sprachausgabe, wird am besten global als variant definiert.

var
  SpVoice: variant;

Im FormCreate-Ereignis wird die Sprachengine dann als OLE-Objekt erzeugt.

  //Spracheausgabe vorbereiten
  SpVoice := CreateOleObject('SAPI.SpVoice');
  SpVoice.Rate:=1; //Sprechgeschwindigkeit von -10 bis 10
  SpVoice.Volume:=90; //Lautstärke von 0 bis 100

Mehr Vorbereitungen sind nicht notwendig. Als nächstes kommt bereits die Umsetzung der Spracheausgabe im Workshop-Timer. Das geschieht über die Prozedur SpeechOutput. In meinem Fall soll der Workshop-Timer diese Zeitangaben sprechen:

  • Alle 10 Minuten: NOCH X MINUTEN
  • Kleiner als 10 Minuten, jede Minute: NOCH X MINUTEN
  • Kleiner als 60 Sekunden, jede 10 Sekunden: NOCH X SEKUNDEN
  • am Ende: ZEIT VORBEI
procedure TMainForm.SpeechOutput(time : integer);
var
  min,sec : integer;
  text1,text2 : string;
begin
  if Speech=false then exit;
  min:=time div 60;
  sec:=time-min*60;
  text1:='';
  text2:='';
  if time=0 then
    text1:='Zeit vorbei'
  else
    begin
      //Jede ab 10 Minuten jede Minute ansagen
      if (time mod 60=0) then
        begin
          if (min<=10) or (min mod 10=0) then
            begin
              text1:='noch '+IntToStr(min);
              text2:='Minute';
              if min>1 then text2:=text2+'n'
            end;
        end;
      if (time<60) and (sec mod 10=0) then
        begin
          text1:= 'noch '+IntToStr(sec);
          text2:='Sekunde';
          if sec>1 then text2:=text2+'n'
        end;
    end;

Die eigentliche Sprachausgabe erfolgt über die Methode Speak. Der erste Parameter ist der zu sprechende Text. Als zweiter Parameter kann ein Flag angegeben werden. Die 1 steht für eine asynchrone Ausgabe.

  SpVoice.Speak(WideString(text1+' '+text2),1);
end;

Man sollte auf jeden Fall beachten, dass die Methode Speak nur korrekt arbeitet, wenn ein WideString übergeben wird. Deshalb ist hier immer eine Konvertierung erforderlich.

Das war es schon! Mehr ist für eine einfache Sprachausgabe nicht erforderlich.

Wenn Sie jetzt Lust bekommen haben, selbst mit der Sprachausgabe über die Microsoft Speech API zu experimentieren, finden Sie unter Download ein kleines Test-Projekt vorbereitet.

Den den Workshop-Timer finden Sie natürlich auch unter Download.

Ich wünsche Ihnen viel Spaß beim Ausprobieren.

Download

symbol_download

Workshop-Timer Upgrade mit Spracheausgabe

symbol_download

Beispiel-Projekt zum Testen der Sprachausgabe

Links

Dokumentation zur Microsoft Speech API 5.3
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms723627(v%3dvs.85)

Für die Sprachausgabe schauen Sie am besten auf das Objekt SpVoice
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms720149(v%3dvs.85)

Artikel Schnelle Ideen in Workshops

Meine Artikel zur ersten Version des Workshop-Timers:
Besprechungs- und Workshop Timer
Besprechungszeit visualisieren

Dieser Beitrag hat 2 Kommentare

Kommentar verfassen