Text to speech Alternative zu Sonos

Hallo Community,
Ich bin auf der Suche nach einer text to speech Alternative zu dem Sonos System.

Bei mir laufen in allen belebten Räume, Kodi Clients auf Arm Socś, und dafür gibt es wiederum ein Addon was sich Screenreader nennt und auch die Google Engine zum vorlesen der Texte verwendet.Kodi Addon Screenreader
Vielleicht hat jemand von euch dass schon mit dem HC2 umgesetzt !?

Alternativ dachte ich, ich baue mir ein paar kleine Musik Player mit einem Arm Soc selber, Software gibt es dazu ja schon reichlich siehe:
Volumino
Rune Audio
So wie ich dass gesehen habe sollte es doch möglich sein per Lua via os.execute eine ssh verbindung zu den Netzwerkplayern herzustellen und von dort den Google sprachbefehl auszuführen.
Dazu habe ich auch dass hier gefunden: RPi_Text_to_Speech

Also wenn jemand irgendwelche Ideen, Vorschläge oder Lösungen kennt, einfach in den Thread schreiben.

Hi,

os.execute funktioniert nicht mehr, weshalb es keine Möglichkeit mehr gibt eine ssh-Verbindung aufzubauen. Dies wurde mit einem Update entfernt.
Ich hatte bei mir mal Google-TTS am laufen. Aber für meinen Geschmack hat google zu oft die API-Calls geändert, weshalb es dann einfach irgendwann nicht mehr ging.

Derzeit nutze ich Rocki (myrocki.com) und selbst erstellte mp3s.

Gruß

Moin,
Selbst erstellte mp3s wären für mich keine Alternative, es sollten schon variable Ausgaben sein.
Ich habe mir jetzt ein Multiroom Audiosystem gebaut mit dem Pulseaudio Server und dem "MPD"Music Player Daemon, die direkt auf dem HC2 laufen.
Leider finde ich für den MPD kein virtuelles Device für den HC2.

Also wenn jemand irgendwelche Ideen, Vorschläge oder Lösungen kennt, einfach in den Thread schreiben.

Lg :slight_smile:

Du kannst den MPD mit UpNP-Befehlen ansprechen :wink:

Okay, ich habe kein plan wie ich dass realisieren kann.
Ich bin gerade dabei die ersten schritte in Lua zu lernen, also werde ich dass wohl nach hinten verschieben müssen.
Lg

Servus!

Ich verwende picoPI2 (<-- LINK) auf einem RasPi.
Das ist die offline Version der google TTS Engine, soweit ich weiß, sie klingt halbwegs O.K.

Allerdings hänge ich gerade mit anderen Dingen (das Haus auf Z-Wave umbauen) sodass ich im Moment keine Zeit und Nerven habe, das ganze weiter zu betreiben…

Ich habe die Engine über HC2 nicht ansprechen können, nur über Putty im Direktzugriff. Meine Linux/PHP Kentnisse sind sehr bescheiden…

Ich habe mal im deutschsprachigen RasPi Forum nachgefragt, leider ohne Erfolg. :frowning:

Falls jemand drüberliest und mir erklären kann, wie ich vom HC2 den Pfad und das PHP-Script ausführen kann, wäre ich sehr dankbar :slight_smile:
“/pi/picoPi2-master/tts/tts.php tts=testsepp” <-- Es schint hier ein Rechte/Pfadproblem vorzuliegen…

Vom HC2 kann ich nur den /www Ordner ansprechen, dort funktioniert aber das php script nicht, das funktioniert nur im /TTS Verzeichnis.

In einem VD kannst du folgenden Code nutzen. Musst nur die Payload und die Content-Length anpassen :wink:

tcpSocket = Net.FTcpSocket(ip, port)
payload = [[POST /upnp/control/rendertransport1 HTTP/1.1
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
CONTENT-TYPE: text/xml ; charset="utf-8"
Content-Length: 344

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID/><CurrentURI>http://www.verarscht.org/tts/WC.mp3</CurrentURI><CurrentURIMetaData/></u:SetAVTransportURI></s:Body></s:Envelope>]]

bytes, errorcode = tcpSocket:write(payload)
    fibaro:debug(errorcode);
if errorcode == 0 then
    state = tcpSocket:read()
    fibaro:debug(state);
end
tcpSocket:disconnect()
--SPIELE TTS
tcpSocket = Net.FTcpSocket(ip, port)
payload = [[POST /upnp/control/rendertransport1 HTTP/1.1
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
CONTENT-TYPE: text/xml ; charset="utf-8"
Content-Length: 245

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID/><Speed/></u:Play></s:Body></s:Envelope>]]

bytes, errorcode = tcpSocket:write(payload)
    fibaro:debug(errorcode);
if errorcode == 0 then
    state = tcpSocket:read()
    fibaro:debug(state);
end
tcpSocket:disconnect()