Forum: Compiler & IDEs AMBE Vocoder programmieren in C


von Hans G. (weakbit)


Lesenswert?

Hallo, nochmal alles Gute imn Neuen Jahr 2014!

Die Frage die ich jetzt stelle ist schon ein Problem zu formulieren.

AMBE ist ein Vocoder der für ganz langsame Bitraten einen Audiostream 
(Sprache) in Coeffizienten umwandelt. Ein Sprachsignal wird analyziert 
dann in Coeffizienten umgewandelt mit einem FEC (Forward Error 
Correction) versehen und dann via einem Funksignal als DMR (Digital 
Mobile Radio) über dem Äther verschickt.

Die Empfangsseite entpackt die Datenpakete und syntetisiert die 
Coeffizenten wieder zu einem Sprachsignal.

Leider gibt es denn AMBE nur als Hardware das bedeutet das man keinen 
Umsetzer für so ein Siganl basteln kann wenn man z.B. auf einen anderen 
Audiostream umrechnen möchte.

Kennt jemand dieses Verfahren das hier angewendet wird und/oder kann mir 
jemand erklären wie man so einen Analyzer programmieren kann. Das 
Problem für mich ist das ich schon verstehe das man hierführ einen 
Audioanalyzer programmieren muss und dann mittels DFT/FFT die 
Coeffizenten analysiert. Genau das ist es was ich machen will. Einen 
Analysator und dann das Ergebniss dieser Analyse wieder synthetisieren 
und abspielen.
Ob der Raspberry Pi das nun verarbeiten kann weis ich nicht oder 
zumindest ein PC kann das auf jeden Fall.

Für Anregungen und Infos bin ich natürlich Dankbar.

LG
weakbit

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Da das Ding durch Patente geschützt ist, wirst du kaum jemanden finden,
der das als Opensource anbietet.

Das ist ja schließlich einer der wesentlichen Kritikpunkte an D-STAR.

von Hans G. (weakbit)


Lesenswert?

@Jörg,

danke einmal für Deine Antwort - das ist nicht nur die Kritik an D-Star 
sondern an fast alle Digitalen Systemen. Da dieser Chip in D-Star, DMR, 
dPMR, APCO P25, Nexedge... und andere.
Jedoch kann man die Koeffizienten Analyse und das Verfahren nicht 
patentieren. Ich suche nicht unbedingt genau den Vocoder sondern Jemand 
der sich da auskennt ob das nun das Gleiche ist oder ein so ähnliches 
Verfahren ist ist mir eigentlich nicht so Wichtig. Ich will auch keinen 
Chip nachbauen sondern lediglich verstehen wie das Ding funktioniert das 
ich ein Programm das ähnlich funktioniert schreiben kann. Wie kann man 
ein Geheimnis durch ein Patent Schützen ausser gar nicht - denn wenn ich 
das System nachbauen will so lese ich einfach die Patente aber da steht 
genau nichts drinnen. Was ich wissen will ist wie man so etwas 
programmiert - ich denke mir das es einen Softwareweg geben muss z.B. 
von diesem Codec auf einen anderen Codec umsetze kann.

Als Beispiel wenn man nun diesen Codec empfangt so braucht man einen 
Decoder dann reformatiert man das Signal und sendet es mit einem anderen 
Codec Verfahren komprimiert weiter.

Das Problem: Wir haben nun zig verschiedene Digital-Systeme das ganze 
erinnert an die 80er Jahre wo Video2000, VHS, Betamax den Markt 
bombardierten aber welches der Systeme ohne sich jetzt alle kaufen zu 
müssen setzt sich durch?
Das bedeutet ads ein D-Star Nutzer nicht mit einem DMR Nutzer sprechen 
kann da liegt das Problem. Wenn man mit GSM telefoniert sagt man auch 
nicht welches System die BTS hat oder?

Als HAM benötigt man einen Goldenen Esel um das alles mitzumachen, die 
Lager der Einzelnen Verfahren spalten sich in "ich hab Geld und bin 
besser(Markenfetischisten und Fans)" und/oder "ich kann nicht alle 
Geräte kaufen weil mir das alles zu teuer ist(wenn ich mir ein Gerät 
irgend eines Standards leiste kann, kann ich mit meinen Nachbarstationen 
nicht oder nur beschränkt mitreden)"

Das bedeutet aber auch das sich die Lager von einander entfernen und 
nichts gemeinsames ausser über das Geld entscheidende System auf der 
Amateurfunkseite bleibt! Soll heissen diejenigen die sich das alles 
leisten können spalten das Lager in mehrere Teile - ab diesem Punkt ist 
es kein HAM Spirit mehr das muss auch gesagt werden und dann gibt es 
überhaupt keinen mehr der sich für dieses Hobby interessiert(vor allem 
die Jugend interessiert sich dann überhaupt nicht mehr im Zeitalter von 
Skype und Co.).

Man kann aus der Problematik alleine hier im Raum Wien feststellen das 
es D-Star, DMR 70cm, DMR 2m, C4FM(das neue Verfahren) wenn man in 
Vorarlberg ist gibt es APCO P25. Also wie viele Geräte benötigt man!? Es 
ist ein Wahnsinn und erinnert an die 80er als noch jedes Land ein 
anderes Mobilnetz hatte.

LG
weakbit

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hans Grüner schrieb:
> Was ich wissen will ist wie man so etwas programmiert

Ich vermute, dass du da im DSP-Forum die kompetenteren Leute treffen
wirst.

von Karl H. (kbuchegg)


Lesenswert?

Hans Grüner schrieb:

> patentieren. Ich suche nicht unbedingt genau den Vocoder sondern Jemand
> der sich da auskennt ob das nun das Gleiche ist oder ein so ähnliches
> Verfahren ist ist mir eigentlich nicht so Wichtig. Ich will auch keinen
> Chip nachbauen sondern lediglich verstehen wie das Ding funktioniert

Das Prinzip ist ja nicht so wahnsinnig schwer.
Auf der einen Seite hat man eine Welle, auf der anderen Seite eine 
Standardgleichung mit unbekannten Koeffizienten.
Die Analyse besteht nun darin, die Koeffizienten dergestalt zu 
bestimmen, dass die Gleichung mit eingesetzten Koeffizienten möglichst 
exakt die ursprüngliche Welle beschreibt.

Das Stichwort 'Fourier-Analyse' bzw. die mathematische Vorstufe 
'Fourier-Reihe' ist schon nicht schlecht.

Im Prinzip ist das auch nichts anderes als ein Curve-Fitting, dessen 
einfachster Fall die lineare Regression darstellt. Anstelle einer 
Punktwolke bleiben nur noch 2 Werte k und d übrig, die die Punktwolke 
näherungsweise beschreiben, weil die Punkte alle auf der Geraden y = k * 
x + d liegen.

Nur das du hier natürlich keine Geradengleichung nimmst, sondern eine 
Gleichung, die grundsätzlich schon mal eine periodische Welle abbilden 
kann, wie zb eine Sinus oder Cosinus-Funktion, bzw. entsprechende 
Kombinationen davon.
Und man sucht auch nicht nach Koeffizienten, die die Welle als Ganzes 
möglichst gut beschreiben, denn dann würde man nie fertig, sondern man 
beschränkt sich dann eben zb auf die Kurve, die sich ergibt, wenn man 
die nächsten (Hausnummer) 200 Sampling-Punkte betrachtet. Die Frage ist 
dann zb, wie die Koeffizienten von
1
   y = a1 * cos( k1 * t + phi1 ) + a2 * cos( k2 * t + phi2 ) + ......
sein müssen, damit dieses a1, k1, phi1, a2, k2, phi2, ... in die 
Gleichung eingesetzt und für verschiedene hintereinanderliegende 
Zeitpunkte t ausgerechnet, möglichst gut wieder die originalen 
Samplingpunkte ergibt.

Übertragen werden brauchen dann nämlich nicht die 200 Sampling Punkte 
der originalen Aufzeichnung, sondern nur das a1, k1, phi1, a2, k2, phi2 
(und alle weiteren Koeffizienten der Gleichung) und der Empfänger kann 
damit und mit der Kenntnis der Gleichung die Samplingwerte über die Zeit 
t wieder errechnen.

Das grundsätzliche Prinzip ist nicht so wahnsinnig schwer. Schwer ist 
es, das dazu nötige Tempo zu erreichen.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Ich kenne AMBE nicht, aber Sprachkodierer sind meiner Meinung nach nicht 
so ganz einfach zu realisieren:
http://de.wikipedia.org/wiki/Code_Excited_Linear_Prediction

von chris_ (Gast)


Lesenswert?

Vielleicht sollte man erst mal erklären, was AMBE ist:
http://de.wikipedia.org/wiki/Advanced_Multi-Band_Excitation

von chris_ (Gast)


Lesenswert?

Hier gibt es eine Seite, mit einem Open-Source 2400Bit/s Codec:
http://www.rowetel.com/blog/?page_id=452
Es gibt auch einen Link auf das SVN-Repository. Ich würde mal sagen, die 
Software ist ziemlich aufwendig.

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.