Spracherkennung

Dies ist ein kleines Tutorial zur Nutzung der Spracherkennung im SinusBot. Das Feature ist immer noch höchstexperimentell und wird auf jeden Fall deutlich mehr CPU und RAM benötigen.

Diskussion zum Thema hier.

  • mindestens Version 0.9.12-2e48476
  • aktuell müssen sämtliche Befehle vorkonfiguriert werden
  • es gibt keine kontinuierliche Erkennung
  • maximal 3 Sprecher können zur selben Zeit erkannt werden; wenn mehr als 3 Personen sprechen, werden die zuletzt sprechenden Personen ignoriert; in den meisten Fällen sollte das mehr als genug sein
  • aktuell funktioniert die Spracherkennung nur mit lizensierten Instanzen
  • Enable = true unterhalb von [SpeechRecognition] in die config.ini eintragen
  • die heruntergeladene Datei ins SinusBot-Verzeichnis entpacken (so dass es einen neuen Unterordner namens „speech“ gibt)
  • ein Script (siehe unten) in den scripts-Ordner kopieren, dass die Spracherkennung nutzt
  • den Bot neu starten

registerPlugin({
    name: 'Speech Recognition Demo',
    version: '1.0',
    description: 'This is a simple script that will stop playback when you say "stop"',
    author: 'Michael Friese <[email protected]>',
    vars: [],
    voiceCommands: ['stop']
}, function(sinusbot, config) {
    sinusbot.setARC(2); // Enable audio return channel
    sinusbot.on('speech', function(ev) {
        if (ev.text == 'stop') {
            sinusbot.log('Stopping playback on behalf of client ' + ev.clientId);
            sinusbot.stop();
        } else {
            sinusbot.log('Client ' + clientId + ' just said ' + ev.text);
        }
    });
});

Es ist eigentlich relativ simpel: man registriert einige voiceCommands im Manifest des Plugins. Wenn eines dieser Wörter erkannt wird, wird das „speech“-Event ausgelöst und diesem die clientId übergeben.

Wichtig: Nur Wörter, die in der Datei ./speech/dict stehen können erkannt werden. Es sind bereits viele englische Wörter und ihre phonetische "Übersetzung" enthalten - bei der Übersetzung ins Deutsche kann es ein wenig Kreativität bei der phonetischen "Übersetzung" erfordern, damit alle Begriffe auch wirklich erkannt werden.

Es wird außerdem empfohlen, sämtliche Befehle mit „bot“ o.Ä. anfangen zu lassen, damit der Bot nicht mitten in einer Unterhaltung ungewollt Befehle ausführt.