Forum: Mikrocontroller und Digitale Elektronik Netzwerkbasierte, Bidirektionale Audiokommunikation mit ESP32


von Sebastian P. (sebastian_pe0)


Lesenswert?

Hallo zusammen,

ich bin schon länger am Überlegen für eine geeigneten Lösungen meines 
Problems und benötige etwas Hilfe um meine Gedanken zu ordnen.

Folgendes Problem:

Eine Gegensprechfunktion soll mithilfe eines Moduls bestehend aus 
einem I2S MEMS Mikrofons (TYP: SPH0645LM4H-B), einem magnetostatischen 
Lautsprecher (TYP: CMS-151103-088SP) und einem ESP32 in der Arduino IDE 
realisiert werden.
Angestrebt wird eine netzwerkinterne und von den Routereinstellungen 
unabhängige live Kommunikation zwischen dem Modul und einem 
Smartphone.

Bisherige Lösungsansatz:

Das Konzept hinter dieser Gegensprechfunktion wäre VoIP.
Um Verbindungen zwischen Client (Smartphone) und Server (Modul) aufbauen 
zu können, wäre die Einbindung von SIP- bzw. RTP- Bibliotheken nötig um 
den Verbindungaufbau bzw. Datenübertragung zu ermöglichen.
Dazu half mir auch schon der Beitrag von Jürgen L.,
www.mikrocontroller.net/topic/444994#5310320
sehr weiter, um den softwaretechnischen Aspekt der Requests und 
Responses von SIP zu verstehen.

Die digitalisierten Audiodaten des Mikrofons liegen übrigens zur 
weiteren Verarbeitung schon bereit und warten auf die Übetragung.

Bin ich mit diesem modulseitige Lösungsansatz schon auf dem richtigen 
Weg oder wäre der Betrieb eines HTTP-Servers am ESP, der die Audiodaten 
auf das Smartphone streamt, einfacher zu implemtieren? Ist mein Ansatz 
zu diesem Problem realisierbar? Gibt ein einfachere Ansätze oder 
Überlegungen?


Bin für jeden Hinweis, jede Hilfe oder Anmerkung sehr dankbar! :)

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Sebastian P. schrieb:
> äre die Einbindung von SIP- bzw. RTP- Bibliotheken nötig um
> den Verbindungaufbau bzw. Datenübertragung zu ermöglichen.
Der SIp-Teil ist simpel, der RTP-Teil, da werden nur die 
sprach-Datenpackete verschickt. Viel interessanter ist das Thema Codecs, 
über RDP sind da zig verschiedene möglich und die beiden Endgeräte (und 
ggf. die Vermittlung mittendrin) handeln zu beginn erstmal aus welchen 
sie verwenden. Also musst du zumindest einen Codec auf dem ESP 
implementieren den auch dein Endgerät unterstützt. Und Codecs können 
schon einiges an Rechenzeit fressen....

> Die digitalisierten Audiodaten des Mikrofons liegen übrigens zur
> weiteren Verarbeitung schon bereit und warten auf die Übetragung.
In einen für Voip/ dein endgerät gültigen Codierung?

> Weg oder wäre der Betrieb eines HTTP-Servers am ESP, der die Audiodaten
> auf das Smartphone streamt,
ein Http-Server "streamt" von hause aus erstmal garnichts, da brachst du 
erstmal noch weitere Protokkolle dazu und das Thema Codec was beide 
Seiten verstehen müssen hast du hier auch.
- https://en.wikipedia.org/wiki/RTP_payload_formats
- https://de.wikipedia.org/wiki/Streaming-Server

von NichtWichtig (Gast)


Lesenswert?


von Sebastian P. (sebastian_pe0)


Lesenswert?

Vielen Dank für die schnelle Antwort.

Irgend W. schrieb:
> Also musst du zumindest einen Codec auf dem ESP
> implementieren den auch dein Endgerät unterstützt. Und Codecs können
> schon einiges an Rechenzeit fressen....
Da ich mich im vorhinein für ein I2S Mikrofon entschieden habe und dies 
im Datenblatt auch dezidiert so beschrieben ist, habe ich gehofft auf 
einen Codec verzichten zu können. Schließlich passiert die 
Sprachdigitalisierung ja schon im Mikrofon. Weiters frisst der Codec 
nicht nur Rechenzeit, sondern vergrößert die Komplexität meines Projekts 
auch noch um ein Vielfaches.

> In einen für Voip/ dein endgerät gültigen Codierung?
Bezüglich der Codierung kann ich keine Aussage treffen. Was ich 
allerdigs weiß ist, dass das Ausgangssignal als PCM-Signal an den ESP 
geschickt wird. Dort wird es gebuffert und in einem Array 
zwischengespeichert. Das aufgenommene Audiofile hab ich dann als .wav 
Datei im SPIFFS gespeichert und dieses über die IP-Adresse des ESPs 
abrufbar gemacht. Dann konnte ich die .wav-Datei auf mein Endgerät 
runterladen und abhören.

> ein Http-Server "streamt" von hause aus erstmal garnichts, da brachst du
> erstmal noch weitere Protokkolle dazu und das Thema Codec was beide
> Seiten verstehen müssen hast du hier auch.
Also ist die Einbindung eines für mein Endgerät unterstützten Codecs für 
beide Lösungsansätze unumgänglich?

von Sebastian P. (sebastian_pe0)


Lesenswert?

NichtWichtig schrieb:
> https://de.wikipedia.org/wiki/Asterisk_(Telefonanlage)

Vielen Dank für den Link. Schaut auf den ersten Blick nach dem aus 
wonach ich Suche. Gibt es Erfahrungen mit der Integration von Asterisk 
auf einem ESP32? Laut Artikel sollte das zumindest für einen Pi kein 
Problem sein.

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? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.