Forum: Mikrocontroller und Digitale Elektronik Neue Hilfssoftware: PicoVoice unterstützt Arduino, Renesas integriert Azure RTOS


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

Mikrocontroller-Entwickler dürfen sich über neue Bibliotheken freuen. Picovoice - das Unternehmen bietet Offline-Spracherkennung an - unterstützt Arduino, während Renesas Azure RTOS in den Code-Generator integriert.

von Tam Hanna

Worum geht es hier?

PicoVoice ist ein Unternehmen, das grammatikbasierte Spracherkennung ohne Internetverbindung auf Mikrocontrollern möglich macht. Hinter dem Begriff grammatikbasierter Erkennung verbirgt sich der Gedanke, dass das Programm nicht wie beispielsweise Lernout&Hauspie’s Dragon „frei“ Text erkennt, sondern anhand vorgegebener Grammatik-Eingabeschemata Erkennungen durchführt. Die geringe Flexibilität wird durch höhere Erkennungsgenauigkeit und reduzierten Ressourcenverbrauch belohnt. Im Hause Renesas geht es derweil um eine Erweiterung des hauseigenen Code-Generators, der bei Bedarf Projektskelette generiert, die Azure RTOS enthalten.

Picovoice am Arduino

Picovoice steht per se seit einiger Zeit für diverse Arduino-Plattformen zur Verfügung, die „Integration“ in das Ökosystem musste der Entwickler bisher selbst vornehmen. Nun gibt es erstmals - siehe Abbildung - eine Bibliothek, die zwar nur mit dem Arduino Nano 33 BLE Sense kompatibel ist, sich aber direkt aus der Arduino IDE heraus installieren lässt.

Die Integration in den für die Erzeugung der Modelle notwendigen Cloud Dienst ist, wie man es von Standalone-Varianten von Picovoice erwarten würde. Wichtig ist vor allem das Programmbeispiel GetUUID, das die für die Lizenzierung erforderliche Hardware-Id des Boards erzeugt:

1
#include <Picovoice_EN.h>
2
3
void setup() {
4
    Serial.begin(9600);
5
    while (!Serial);
6
7
    const uint8_t *board_uuid = pv_get_uuid();
8
    Serial.print("UUID: ");
9
    const int32_t format_size = pv_get_uuid_size() * 4;
10
    char format[format_size];
11
    for (uint32_t i = 0; i < pv_get_uuid_size(); i++) {
12
        sprintf(format, " %.2x", board_uuid[i]);
13
        Serial.print(format);
14
    }
15
    Serial.println("\r");
16
}

Für den eigentlichen Sprach-Verarbeitungs-Workflow steht mit File -> Examples -> Picovoice_EN -> PicovoiceExample ein weiteres Beispiel zur Verfügung.

Von besonderer Wichtigkeit ist die Methode loop, die unter Nutzung einer von Picovoice vorgegebenen Methode Samples einsammelt und diese zur Verarbeitung freigibt:

1
void loop()
2
{
3
    const int16_t *buffer = pv_audio_rec_get_new_buffer();
4
    if (buffer) {
5
        const pv_status_t status = pv_picovoice_process(handle, buffer);
6
        if (status != PV_STATUS_SUCCESS) {
7
            Serial.print("Picovoice process failed with ");
8
            Serial.println(pv_status_to_string(status));
9
            while(1);
10
        }
11
    }
12
}

Interessant ist auch noch, dass die setup-Funktion komplett ohne Internetverbindung auskommt.

Bei der Beschäftigung mit dem Picovoice-Ökosystem ist noch wichtig, dass zwei unterschiedliche Produkte zur Verfügung stehen: Einerseits die als Porcupine bezeichnete Wakeword-Engine, andererseits das als Rhino bezeichnete Intent-Erkennungssystem.

Code-Konfiguration, automatisch.

Desto leistungsfähiger ein Echtzeit Betriebssystem ausfällt, desto involvierter ist seine Konfiguration. Die von Mikrocontroller-Herstellern seit längerer Zeit angebotenen Codegeneratoren bekamen Module eingeschrieben, die - meist auf FreeRTOS basierte - Projektskeletten generieren konnten. STMicroelectronics spielte im Bereich der Integration zwischen Cube und Azure RTOS eine Vorreiterrolle, Renesas rüstet nun sein als Flexible Software Packet bezeichnetes Codegenerator-System mit einer Option für Azure RTOS aus. Zur Erinnerung: Azure RTOS ist kein komplett neues Produkt, sondern „nur“ ein Microsoftsches Rebranding von Express Logic’s ThreadX.

Zum Zeitpunkt der Drucklegung unterstützt Renesas dabei RA, RX und Synergy. Im Bereich der Middleware sind folgende Module verfügbar:

1
     Azure RTOS FileX high-performance File Allocation Table (FAT)-compatible file system
2
     Azure RTOS GUIX embedded graphical user interface (GUI) application design environment
3
     Azure RTOS TraceX Windows-based analysis tool
4
     Azure RTOS NetX Duo industrial-grade dual IPv4 and IPv6 TCP/IP network stack
5
     Azure RTOS USBX high performance USB host and embedded stack

Ein unter https://aka.ms/MicrosoftAzureRTOS/RenesasFSP/Video bereitstehendes YouTube-Video illustriert die Tiefe der Integration zwischen FSP und Azure RTOS. So ist es zum Beispiel - siehe Abbildung - möglich, die Prioritäten einzelner Threads aus dem GUI festzulegen.

Interessant ist in diesem Zusammenhang auch noch die in der Abbildung gezeigte Möglichkeit, Einrichtungs-Code für häufig verwendete Bibliotheken wie den MQTT-Client „per Drag and Drop“ aus dem Project Explorer direkt in das geöffnete Codefile abzulegen.

Mehr erfahren

Arduino-Portal für PicoVoice => https://picovoice.ai/docs/quick-start/picovoice-arduino/


:
Dieser Beitrag kann nur von angemeldeten Benutzern beantwortet werden. Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.