Hallo, ich würde gerne ein Sprachsignal von einem ATMega32 zum anderen Übertragen und von diesem aus per RS232 zum PC und sich dieses dort anhören. Die Sprachqualität soll gut bis mäßig sein. Nun habe folgende Möglichkeit wie man es angehen könnte: An ATMega einen Mikrophon anschließen, die analogen Signale dann mittels AD-Umsetzer in digitale umwandeln und diese anschließend an den anderen ATMega mit RFM12 übertragen. Jedoch kann ich mir vorstellen, das es einen riesen Aufwand darstellt, oder irre ich mich? Kann ich dies mit dem ATMega32 und RFM12 realisieren oder sind diese dafür ungeeignet? Gibt es eine weitere einfachere Möglichkeit das Sprachsignal zu übertragen, vielleicht gibt es bereits fertige Funkmodule, die schon das Signal ins digitale umwandeln oder ähnliches? Danke
Mega8 nach Mega8 ist kein Problem. Eng wird es eher bei der Übertragung auf den PC. Normalerweise kriegt man max. 115000 Baud, bei 8-Bit-Auflösung sind das also noch gut 10 kHz Samplingrate und somit noch rund 5 kHz echte Bandbreite. Sprache kann man damit verständlich übermitteln, aber 'gute' Qualität ist das nicht mehr.
Ich hab mal so ne Messreihe angelegt. Ab circa 4kHz Sampling wirds verständlich, bisserl dumpf (klar, fehlt ja Bandbreite), aber man kanns verstehen (siehe...ähhm..höre Anhang, das ist ein Text mit 5kHz). Dann wärn da natürlich noch allerhand Codecs, die deine Audiodaten schrumpfen lassen: * PCM * MELP * Speex ..und wie sie alle heißen. Speex funktioniert angeblich schon ab 600 Bytes/sec mit recht guter Sprachqualität, der AVR dürfte dafür aber etwas knapp sein.
uLaw und ALow sind von der Kompression her aber bescheiden (2:1), ebenso ADPCM (bei mehr als 2:1 wird die Qualität sehr schlecht). Alles was besser als etwa 3:1 komprimiert läuft entweder nicht auf einem AVR, oder die Qualität ist unbrauchbar. Ich hatte auch schon mit dem Gedaknken gespielt, Audio über RFM12 zu übertragen, aber es mangels passender Komprimierung dann doch sein lassen. Das einzige was ich gefunden hatte, das ohne größeren Aufwand möglich wäre ist ein Speex Codec für einen dsPIC. Der braucht aber >20MIPs und eine Menge RAM usw.
Hallo, es gibt auch resourcensparende Modulationsverfahren, die z.B. mit einem Bit relativ gut verständliche Übertragungen hinbekommen. Suche mal im Web unter dem Stichwort "Delta-Modulation". Dabei wird ein Kurvenverlauf in der 1. Ableitung (steigt, bleibt, fällt) abgebildet ... Frank
Am einfachsten geht das mit DCPM/ADPCM. Die nutze ich auch für Funkübertragung. Ein paar Links dazu: http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/Small_Form_Factor/en/an147.pdf ww1.microchip.com/downloads/en/AppNotes/00643b.pdf http://www.atmel.com/dyn/resources/prod_documents/doc2572.pdf
Könnte man evtl. zwei günstig ersteigerte DECT Telefone mit dem ATMega steuern? Die Sprachübertragung würden dann die Telefone übernehmen.
Hans wrote: > Könnte man evtl. zwei günstig ersteigerte DECT Telefone mit dem ATMega > steuern? Die Idee hatte ich auch schon, das kann man vergessen (außer man nutzt das Telefon komplett und gibt das Audiosignal analog rein). Die verbauten ICs stammen fast immer von Siemens/Infineon und sind alles proprietärer Mist, zu denen man keine Datenblätter bekommt. Das einzige was ich bisher rausgefunden habe ist, dass die PLLs ein paar hundert mal pro Sekunde neu programmiert werden, also alleine schon für die Datenübertragung der Steuerdaten ein ziemlicher Aufwand notwendig ist.
Frank Esselbach wrote: > Hallo, > > es gibt auch resourcensparende Modulationsverfahren, die z.B. mit einem > Bit relativ gut verständliche Übertragungen hinbekommen. Suche mal im > Web unter dem Stichwort "Delta-Modulation". Dabei wird ein Kurvenverlauf > in der 1. Ableitung (steigt, bleibt, fällt) abgebildet ... Allerdings verschwendet die noch mehr Bandbreite, die Samplerate muss nämlich sehr viel höher sein, als bei den mit 8 oder 16bit digitalisierten Rohdaten. Beispiel: 8bit Wert -> 1bit, bei gleicher Bitrate kann die Samplerate also 8x höher liegen. In den 8bit kann man aber gerade mal einen Wertebereich von +/-8, also 3bit überwinden. "Bleibt" gibt es übrigends meistens nicht, sondern man verwendet nur steigt/fällt, was ein zusätzliches Rauschen erzeugt.
Sinnvoll ist es auch die Bandbreite nach unten hin zu begrenzen, dann wird der gesprochene Text noch verständlicher. (Zu tiefe töne stören nur)
Es gibt zu ADPCM auch was für den AVR. Ich glaube, ein Cornell Projekt und eine AN zum Dekodieren. Man findet im Netz auch Samples, Audacity kann einige Kompressionsarten beim Export. http://www.mikrocontroller.net/search?query=adpcm
Tom wrote: > Vorverstärker zwischen Mikrofon und ATMega muss sein. Sehr glorreicher Beitrag, der 1.) nicht in dieses Forum passt (weil's hier eher um die übertragungstechnischen Aspekte geht) und 2.) nicht stimmt. Der ATmega32 hat einen internen Verstärker am ADC, der die Sache (für ein gängiges Elektretmikro) durchaus erledigen kann. Beitrag "Re: uC gesucht; Funktionsumfang; Anfängerfrage"
Hi! Wie wärs mit einem externen Codec für den AVR? Ein VS1053 kann En- und Decodieren und das sogar im OggVorbis Format. Damit sollte man dann auch eine brauchbare Qualität hinbekommen.32kB/s für ein Monosignal bringen schon eine recht gute Qualität in OggVorbis. Ist halt nicht ganz billig. Grüße Fasti
Hallo, wie wäre es mit einem extra Sprachcodec (sowas wie für GSM, Baudraten bis 4,8kbps). Zu aufwändig? Schau mal hier: http://www.dvsinc.com/manuals/AMBE-2000_manual.pdf Gruß
Ja das ist das D-Star-Modem, das von ICOM im Amateurfunk propagiert wird, leider ist auf dem Verfahren ein Copyright des Herstellers, sodaß man keine Softwarelösung, z.B. mit Soundkarte veröffentlichen darf. http://de.wikipedia.org/wiki/D-STAR Digitale Sprachübertragung mit 3600 bits/s (3.6 kbps) inkl. Fehlerkorrektur Im BOS-Funkbereich (Polizei, Hilfsdienste) ist ein anderer Standard üblich, der zuverlässiger sein soll http://de.wikipedia.org/wiki/Bos_funk#Digitaler_BOS-Funk
Wow soviele Infos, ich hatte mir die Sprachübertragung weniger aufwändig vorgestellt. Aber das klingt nach einer MENGE Arbeit! Jetzt kenne ich aber zumindest den konkretten Wegweiser. Danke nochmals an alle für die Infos!
RichieRich wrote: > Wow soviele Infos, ich hatte mir die Sprachübertragung weniger aufwändig > vorgestellt. Sie wird weniger aufwändig, wenn du mehr Kanalbandbreite zur Verfügung hast. Dann musst du keine irgendwie gearteten Kompressionsalgorithmen mehr anwenden, und wenn der Kanal zuverlässig ist, dann brauchst du auch keine Fehlerkorrektur. Selbst ISDN benutzt aber halt schon µ-law-,,Kompression'', um mit nur 8 bit pro Sample auszukommen, zusammen mit 8 kHz Abtastrate macht das dann die ISDN-typischen 64 kbit/s. Zum Vergleich, für CD-Qualität braucht man 1411200 kbit/s (2 Kanäle je 16 bit, keine Kompression, 44,1 kHz Abtastrate).
Jörg Wunsch wrote: > Zum Vergleich, für CD-Qualität > braucht man 1411200 kbit/s (2 Kanäle je 16 bit, keine Kompression, > 44,1 kHz Abtastrate). 1411200 bit/s, Faktor 1000 kleiner aber immer noch eine ganz dicker Datenstrom. Gruß Katherine
Katherine J. wrote:
> 1411200 bit/s, Faktor 1000 kleiner
Hand-vor-den-Kopf-klatsch klar, danke!
Der Thread ist zwar schon alt, aber anstatt mit Kanonen auf Spatzen zu schießen könnte man auch einfach einen sehr einfachen Codec mit Delta Modulation verwenden, der sich locker in einem AVR unterbringen lässt und schon ab 16 kBit/s brauchbare Ergebnisse liefert (passende analoge Filterung des Eingangs und Ausgangssignal wird vorausgesetzt). Ein AVR mit Harware Multiplizierer ist optimal, ohne geht es aber auch (es sind nur 2 (16 Bit) Multiplikationen pro Abtastwert nötig), dazu zwei Vergleiche (8 Bit), 1 (ggf. 2) Additionen/Subtraktionen und eine Schiebeoperation. Encoder und Decoder sind identisch, mit dem Unterschied dass der Decoder einen Vergleich weniger durchführen muss. Der Codec ist fehlertolerant, da die Information eines (fehlerhaften) Bits über einige ms "abklingt". Wenn man es sich anhört, erhöht sich (ähnlich wie bei einer analogen Funkverbindung) das Rauschen im Hintergrund. Weblinks: http://en.wikipedia.org/wiki/Continuously_variable_slope_delta_modulation http://www.gamearchive.com/General/Data_Sheets/cvsd_speech_info/an1544_cvsd.pdf
> wie wäre es mit einem extra Sprachcodec (sowas wie für GSM, Baudraten > bis 4,8kbps). GSM "schätzt" nur was jemand sagt, ansich schickt GSM keine Sprachinformationen, sondern nur einen Index. Dieser Index ist für eine Liste gedacht, in der die menschliche Sprache in 20ms Laute unterteilt ist. Der Empfänger sucht sich dann mittels Index diesen Sprachton aus seiner Datenbank wieder raus. Damit spart man viel Übertragungsaufwand!
>Damit spart man viel Übertragungsaufwand! ...und tauscht das gegen nur "minimalen" Aufwand für den GSM Codec ein. Mal im Ernst: Ein AVR ist der falsche Prozessor für hochkomprimierende (Sprach)Codecs.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.