Tag Archives: Tropo

Transkription: Anrufe als Emails erhalten

Für die natürliche Nutzung eines Systems ist Spracherkennung in vielen Szenarien eine Option. Ganz egal ob auf Schlüsselwörter gelauscht oder vordefinierten Grammatiken zum Einsatz kommen. Daneben gibt es auch noch die Transkription, welche gesprochene Sprache als lesbaren Text darstellt. Der Developer Garden bietet hier gleich mehrere Lösungen, wie unter http://www.wolter.biz/?p=1368 beschrieben. Neu ist, dass für die Transkription zum einen der in dem Artikel erwähnte Trick nicht mehr notwendig ist und dass zum anderen nun mehr als 40 Sprachen, darunter auch Deutsch, unterstützt werden:

  • English (AUS): en_AU
  • English (UK): en_GB
  • English (US): en_US
  • Arabic (Egypt): ar_EG
  • Arabic (Saudi): ar_SA
  • Arabic (UAE): ar_AE
  • Cantonese Chinese: zh_HK
  • Catalan (Spain): ca_ES
  • Croatian: hr_HR
  • Czech: cs_CZ
  • Danish: da_DK
  • Dutch: nl_NL
  • Finnish: fi_FI
  • French (CAN): fr_CA
  • French (EU): fr_FR
  • German: de_DE
  • Greek: el_GR
  • Hebrew: he_IL
  • Hungarian: hu_HU
  • Indonesian: id_ID
  • Italian: it_IT
  • Japanese: ja_JP
  • Korean: ko_KR
  • Malay: ms_MY
  • Mandarin Chinese: cn_MA
  • Taiwanese Mandarin: zh_TW
  • Norwegian: no_NO
  • Polish: pl_PL
  • Portuguese (BR): pt_BR
  • Portuguese (EU): pt_PT
  • Romanian: ro_RO
  • Russian: ru_RU
  • Slovak: sk_SK
  • Spanish (EU): es_ES
  • Spanish (MX): es_MX
  • Spanish (US): es_US
  • Swedish: sv_SE
  • Thai: th_TH
  • Turkish: tr_TR
  • Ukranian: uk_UA
  • Vietnamese: vi_VN

Die Programmierung gestaltet sich wie gewohnt sehr einfach. In der Scripting API von Tropo sieht das dann mit Angabe des transcriptionLanguage Parameters so aus:

1
2
3
4
5
6
7
8
record("Sag uns bitte, wie es Dir geht!", {
   voice: "Katrin",    
   beep: true,    
   maxTime: 600,
   transcriptionID: currentCall.callerID,
   transcriptionLanguage: "de_DE",   
   transcriptionOutURI: "mailto:me@mymail.com"
});

Nur eine Rufnummer, aber viele Empfänger

Das Weiterleiten einer zentralen Rufnummer an mehrere Empfänger geht mit Telekom Tropo und ein wenig JavaScript ganz einfach. Beispielsweise für eine einfache Art von Support- oder Business-Kontakt auf einer Website, bei der der Mitarbeiter, der gerade Zeit hat, den Anruf entgegen nimmt. Dafür sollte aber sichergestellt werden, dass die Rufnummer des Anrufers in jedem Fall gemerkt wird. Eine einfache Lösung bietet das folgende JavaScript für die Scripting API von Telekom Tropo. So ist kein weiterer Aufwand in Form von Hosting oder einer Datenbank oder so notwendig. Selbst das Merken der Rufnummer erledigt dieses Skript ohne weitere Hilfe, indem einfach eine SMS mit den Details gesendet wird.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var callerID = "+" + currentCall.callerID;
var calledID = "+" + currentCall.calledID;
 
// All receiver get the call transferred, but the first one wins
var transferToID = ["+4912345", "+493012345"];
var sendNotificationToID = "+4912345";
 
// Notify at least one person in case nobody answers the call
message("Received voice call to Tropo business contact (" + calledID + ") from " + callerID, {
    to:sendNotificationToID,
    network:"SMS"
});
 
say("Welcome to Developer Garden!", {
   voice: "Simon"
});
say("Herzlich Willkommen!", {
   voice: "Katrin"
});
say("For support or general questions please go to our website.", {
   voice: "Simon"
});
say("Nutzen sie fuer allgemeine Fragen bitte unsere Website.", {
   voice: "Katrin"
});
say("Dont hang up, you will be connected!", {
   voice: "Simon"
});
say("Bitte legen sie nicht auf, sie werden verbunden!", {
   voice: "Katrin"
});
 
transfer(transferToID, {
   callerID: calledID,
   playvalue: "http://www.phono.com/audio/holdmusic.mp3" /* only in case there is no ring tone */,
   answerOnMedia: true,
   voice: "Simon"
});

Transkription: Sprache in Text umwandeln

Oft habe ich mir gewünscht, dass die Nachrichten vom Anrufbeantworter per SMS oder Email bei mir eingehen: Am liebsten in Textform! Dann kann ich wichtige Teile wie z. B. Telefonnummern oder Datumsangaben gleich in elektronischer Form übernehmen. Dass das kein Hexenwerk ist, wissen wir spätestens seit Apple Siri (Speech Interpretation and Recognition Interface).

Aber schon vorher haben zahlreiche Systeme intensiv von Spracherkennung Gebrauch gemacht, darunter Videobearbeitungsprogramme wie Adobe Premiere und zahlreiche Sprachdialogsysteme. Um genau zu sein gibt es hier jedoch einen wesentlichen Unterschied: Sprachdialogsysteme versuchen normalerweise Schlüsselwörter zu erkennen, die Transkription möchte hingegen den gesamten Text erfassen. In vielen Fällen reicht ersteres (und ersteres funktioniert in der Praxis meist auch besser). Am allerbesten ist es natürlich, die Wahl zu haben!

Einen einfachen Einstieg in die hier verwendete Scripting API des Cloud-basierten interaktiven Sprachdialogsystem Telekom Tropo finden Sie hier im Blog.

Telekom Tropo bietet in der neuesten Version diese Wahl. Mit ask kann eine Frage gestellt und die Antwort mit Hilfe verschiedener Grammatiken ermittelt werden (keine Sorge, es gibt ganz einfache Grammatiken, die für die meisten Anwendungsfälle ausreichen):

JavaScript (Scripting API):

1
2
var result = ask("What's color? Choose red, blue or green.", {choices:"red, blue, green"}); 
say("You said " + result.value);

Dank der neuen Transkriptions-Funktion kann Gesprochenes wie ein eingehender Anruf aber auch komplett in Text verwandelt werden. Nur einen kleinen Trick muss man nutzen, damit es klappt: Die Transkription erwartet ein Ziel für die Aufzeichnung der Audiodaten (wahlweise FTP oder per http-Post), sollte jedoch keine Aufzeichnung sondern nur die Transkription erwünscht sein, kann man hier einfach irgendein Ziel als Platzhalter eingeben. Außerdem wird eine transcriptionOutURI als HTTP-Post Ziel für das Ergebnis benötigt, die alternativ auch die Verwendung von mailto zum senden einer Email erlaubt:

JavaScript (Scripting API):

1
2
3
4
5
6
7
say("Welcome to speed therapy!");
record("Tell us how you feel in one minute or less!", {    
   beep:true,    
   maxTime:600,
   recordURI:"http://fakeurl.com/", /* we cannot leave this parameter blank */
   transcriptionOutURI: "mailto:me@mymail.com",
});

Das war es schon. Einen Wehrmutstropfen gibt es jedoch: Die Transkription hier ist aktuell nur für Englisch erhältlich und auf eine Minute beschränkt. Für einen Anrufbeantworter oder das Hinterlassen von kurzen Nachrichten sollte das aber allemal genügen…