Hast du schon gesehen, was
Porfirievich macht? Sie hängt den Text an eine Ihrer Phrasen an. Und es kommen wirklich lustige Dinge heraus, weil sie in den Büchern von Dostojewski, Tolstoi, Puschkin, Bulgakow, Gogol und Pelewin geschult wurde.
"Das Ganze mit Levitans Stimme auszusprechen, wäre ein hervorragender Ersatz für den Google-Assistenten für das Neujahrsfest ...", dachte ich. Und ich habe beschlossen, dieses Ereignis nicht auf das
neue Jahr zu verschieben (weil Sie es selbst verstehen).
Under the cut - der gesamte Prozess der Erstellung eines
Open-Source-Sprachassistenten Porfirievich auf dem exklusiven
Open-Source-Framework Aimybox und dessen Start anstelle des regulären Google-Assistenten. Nun, zur gleichen Zeit
kannst du Alice trollen .
Wenn Sie dies alles sofort in der Praxis ausprobieren möchten, können Sie die neueste Version von hier aus installieren
Porfirievich API
Kürzlich wurde im Hub ein
Artikel veröffentlicht, in dem erklärt wird, wie Mikhail Grankin dem
GPT-2- Neuronalen Netzwerk beigebracht hat, „aussagekräftige“ Texte an beliebige Ausdrücke
anzuhängen . Es ist lustig geworden. Darüber hinaus ist der Zugriff auf das neuronale Netzwerk über die reguläre HTTP-API möglich.
Wir gehen zu der
Site, über die Sie Anfragen an Porfiryevich stellen können, öffnen den Inspektor und sehen, wohin die Anfragen gehen und in welchem Format.

Es gibt keine Einschränkungen für diese API, aber der Entwickler empfiehlt dennoch , das Porfiryevich-Modell herunterzuladen und auf seinem Server bereitzustellen.
Aimybox sdk
Wir haben die Porfirievich API! Jetzt musste die eigentliche Sprachanwendung für Smartphones zerschnitten werden, mit der Sprache erkannt und synthetisiert werden konnte.
Eine hervorragende Lösung dafür ist das
offene Aimbox-Framework , über das sie
hier und
hier bereits auf Habré geschrieben
haben . Sie können damit schnell eine Sprachanwendung erstellen oder Sprachfunktionen in ein vorhandenes Projekt einbetten. Gleichzeitig gibt es bereits eine
schöne GUI , die angepasst werden kann.
Sie können eine Beispielanwendung für sich selbst klonen und auf deren Basis ein Projekt erstellen.Übrigens, die erste Version des iOS SDK ist kürzlich erschienen, so dass sie für iOS wiederholt werden kann.
Aimybox kann mit jeder Dialog-Engine, zum Beispiel
Aimylogic, Rasa oder Dialogflow , zusammenarbeiten und Sie können auch eine Verbindung zu jeder anderen implementieren. In unserem Fall müssen wir Anfragen direkt an die Porfirevich-API senden und die Antworten analysieren. Dazu ist nichts erforderlich - um die entsprechenden
Request- ,
Response- Klassen und die
Implementierung von DialogAPI selbst zu schreiben, die tatsächlich Requests sendet und Antworten analysiert.
Erkennung und Synthese
Auf jedem Android-Gerät funktioniert die kostenlose Spracherkennung und Sprachsynthese von Google, sodass Sie sich darüber keine Gedanken machen müssen. Das ist natürlich nur die Stimme, die ich gegen etwas eintauschen wollte, das besser zu der literarischen Silbe von Porfirevich passt ...
Stimme von Levitan
Zuvor hatte
Yandex Speechkit-a (Cloud-basierte Lösung zum Erkennen und Synthetisieren von Sprache) eine wunderbare levitanische Stimme, die perfekt zu unserem Projekt passte. Jetzt ist alles auf
Yandex Cloud umgezogen, alles ist bezahlt (ohne 10.000 Testanforderungen), also musste ich nach Alternativen suchen.
Für Alice -
station.aimylogic.com gibt es so einen tollen Skilltest - Service. Darauf können Sie die Stimme auswählen, die die Antworten synthetisiert, und Ihre Fähigkeiten direkt im Browser testen. Wir schauen in seiner API nach und finden den Endpunkt, an den Anforderungen für die Sprachsynthese gehen

Hier können Sie sehen, dass Sie das gewünschte Ergebnis
erzielen , wenn Sie
Levitan im
Lautsprecherparameter in dieser URL einsetzen. Das brauchen wir!
Tatsächlich ersetzt die PorfirResponse- Klasse diese URL nur durch die erforderlichen Parameter, damit der Sprachsynthesizer die generierte MP3-Datei einfach wiedergibt, anstatt den Antworttext von Porfiryevich auszusprechen.Ersetzen Sie Google Assistant durch Porfiryevich
Sie können unsere Stimme Porfiryevich starten, indem Sie einfach die Anwendung öffnen und auf die Mikrofontaste tippen. Es ist jedoch viel angenehmer, es anstelle des normalen Google-Assistenten auszuführen, da viele Smartphones über eine integrierte Assistentenunterstützung verfügen (auf meinem Oneplus 7 können Sie beispielsweise den Ein- / Ausschalter gedrückt halten, um den Assistenten von einem beliebigen Bildschirm aus zu aktivieren).
Dazu müssen Sie nur noch einen Absichtsfilter
android.intent.action.ASSIST in
AndroidManifest registrieren , das
Flag android: launchMode = "singleTop" setzen und die Methode
onNewIntent in
MainActivity implementieren, um die
Spracherkennung zu starten, wenn die Anwendung im Assistentenmodus aufgerufen wird.
override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) if (intent?.action == Intent.ACTION_ASSIST) { val aimybox = (application as PorfirApplication).aimybox val channel = aimybox.stateChannel.openSubscription() launch { channel.consume { aimybox.startRecognition() } }.invokeOnCompletion { channel.cancel() } } }
In den Smartphone-Einstellungen müssen Sie Porfirevich als Standardassistenten auswählen. Einstellungen -> Anwendungen -> Standardanwendungen
Färbung
In den
Dateien styles.xml und
strings.xml können Sie die Farben der Standard-Aimybox-Benutzeroberfläche ändern und gleichzeitig die Startphrase angeben, die beim Start unseres Assistenten auf dem Bildschirm angezeigt wird.
Wir starten
Eigentlich alles! Nach dem Start können Sie diese Perlen beobachten




Wenn Sie mit Yandex Alice neben ein anderes Smartphone stellen und einen Chat darauf führen, können Sie einen "gesunden" Dialog zwischen zwei nicht ganz gesunden Menschen führen

Was weiter?
Dies sind die Ideen, die bisher in den Sinn kommen
- Zeigen Sie auf dem Hauptbildschirm der Anwendung den Verlauf der Antworten von Porfirevich mit der Möglichkeit des Teilens an.
- Erstellen Sie einen Bildschirm mit Einstellungen - Dialogmodus, Reaktionsdauer, Sprachauswahl usw.
Wenn Sie bessere Ideen haben oder einen Fehler gefunden haben, können Sie
Github verwenden , in dem jetzt der gesamte Projektcode enthalten ist. Sie können auch spenden (Code schreiben).
Nützliche Links