Fritz!Box Anrufbeantworter Encoder / Decoder

J.C.

Neuer User
Mitglied seit
4 Feb 2006
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Hallo, liebes Forum,

ich hab den Speex Encoder/Decoder mal so umgehackt, das man Fritz!Box Anrufbeantworter-Dateien damit bearbeiten kann!

Encodieren funktioniert schon problemlos, dekodieren nur mit selbst kodierten Dateien. Die Fritz!Box kann die so erzeugten Dateien verwenden, man kann nur die aufgenommen Dateien der Fritz!Box nicht (fehlerfrei) dekodieren. (braucht dieses Feature eigentlich jemand, bzw. hat jemand Lust, das zu fixen?)

Die Tools erlauben noch sämtliche Parameter der Original-Tools - selbst diejenigen, die für die Fritz!Box-Dateien keinen Sinn mehr machen.

Anbei die Tools:
speex-1.2beta3-fritzboxtam-beta1-bin.zip beinhaltet den Encoder für Windows und Encoder+Decoder kompiliert auf Ubuntu Linux (Gutsy), samt eines Patches für den Source-Code der Original-Speex Tools.
speex-1.2beta3-fritzboxtam-beta1-src.tar.bz2 enthält den bereits gepatchten Source-Code.

Anleitung zum Aufspielen einer Ansage:
  1. Ansage als .wav-Datei erstellen (PCM 16 bit mono 8000 Hz)
  2. speexenc-fb ansage.wav ansage.fb aufrufen
    Wenn die .wav-Datei korrekt war, sollte jetzt exakt folgende Ausgabe erscheinen:
    Code:
    Encoding 8000 Hz audio using narrowband mode (mono)
  3. ansage.fb auf Fritz!Box in den avm_tam-Ordner auf USB-Stick übertragen und entsprechend umbenennen (also z.B. uvp.0.000)
Ansage testen:
Code:
speexdec-fb ansage.fb
 

Anhänge

prodigy7

Mitglied
Mitglied seit
28 Mai 2005
Beiträge
735
Punkte für Reaktionen
1
Punkte
18
Funktioniert super! Danke!!!!!!!!!! :dance:
 

Brix.Taylor

Gesperrt
Mitglied seit
31 Dez 2007
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Worin besteht der Unterschied zum original SpeeX ??
 

J.C.

Neuer User
Mitglied seit
4 Feb 2006
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Unterschied zum original Speex Codec

Ich hab alles, was mit dem OGG-Containerformat zu tun hat, auskommentiert, und das simple hier verwendete Containerformat implementiert, das im Gegensatz zu OGG keinen Header besitzt und nur jeweils ein zusätzliches Byte vor jedem Paket verwendet, das seine Länge angibt.

siehe auch: http://www.ip-phone-forum.de/showthread.php?t=131970
 

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
3
Punkte
0
Hi Leute,

das dekodieren der Original-Dateien geht auch. Es gibt nur kein Längenbyte!!!
Das Paket hat eine konstante Größe von 38 Bytes. Die Framesize beträgt immer 160 Samples (*2 = 320 bytes).

EDIT:
muss meine Aussage etwas ändern:
hatte zum testen die Dateien unter /usr/share/tam/messages verwendet (die Ansagen aus dem Menü). Die sind ohne Längenbyte.

EDIT:
Alles klar. Wer (genau) lesen kann ist klar im Vorteil. Jetzt verstehe ich auch was groefritzchris mit rec und fvp meint. uvp fällt dann wohl auch unter den rec Dateien. Verdammte Abkürzungen ;)
Wobei meine rec.0.000 jetzt konstante 38 Bytes als Paketgröße hatte... - mal sehen...
 
Zuletzt bearbeitet:

MrStamper

Neuer User
Mitglied seit
18 Okt 2005
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Ich verwende den FB-AB ohne Speicherstick - wie kann ich dann die Ansagedateien tauschen?
 

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
3
Punkte
0
ok.. habe den Dekoder geändert und für die FB kompiliert.
Bin mir nicht sicher, ob der nun Fehlerfrei dekodiert, deswegen poste ich einfach mal...

EDIT:
was ich geändert habe:

src/speexdec.c (ab Zeile 737):
Code:
...
  bytes = 0;
  nb_read = fread(&bytes, sizeof(char), 1, fin);      
[COLOR="SeaGreen"]  while(bytes != 38 && !feof(fin))
     nb_read = fread(&bytes, sizeof(char), 1, fin);      
[/COLOR]
  //  packetbuffer[0] = bytes;
  nb_read = fread(&packetbuffer[0], sizeof(char), (int)bytes, fin);      
...
hatte jetzt keine Lust nen Patch zu schreiben für diese Holzhammermethode.
Aber wenn Sie funktioniert, dann sollte es reichen.
Falls jemand rauskriegt, was die Bytes zu bedeuten haben (also diese, != 38 ), so möge er es hier posten.
 

Anhänge

Zuletzt bearbeitet:

merecumbe

Neuer User
Mitglied seit
3 Jan 2008
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
ok.. habe den Dekoder geändert und für die FB kompiliert.
Ich hätte Interesse an den geänderten Sourcen um das mal unter OS/2 zu kompilieren und testen zu können.

Update:

Danke bodega für die Dokumentation der Änderungen!

OK beides lässt sich mit etwas Handarbeit auch unter OS/2 kompilieren.
Der Enkoder funktioniert auch :).
Der Dekoder leider nicht.
Er erstellt zwar eine .wav Datei, die nach dem Header aber nur aus unregelmaessigen Folgen mit bytes der Menge {00 01 02 03 FD FE FF} besteht. (Lässt sich abspielen, aber man hört nichts) :-(

Franz
 
Zuletzt bearbeitet:

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
3
Punkte
0
Wusste garnicht, dass OS/2 überhaupt noch von irgendwem benutzt wird.
Poste mal ein Speex File, bzw. dekodiere es auf der Box um auszuschließen, dass nicht etwas anderes falsch läuft.

merecumbe schrieb:
Er erstellt zwar eine .wav Datei, die nach dem Header aber nur aus unregelmaessigen Folgen mit bytes der Menge {00 01 02 03 FD FE FF} besteht
Sieht doch halbwegs aufsteigend aus ;). Aber was soll mir das sagen?
 
Zuletzt bearbeitet:

leo22

Aktives Mitglied
Mitglied seit
13 Apr 2005
Beiträge
902
Punkte für Reaktionen
0
Punkte
16

merecumbe

Neuer User
Mitglied seit
3 Jan 2008
Beiträge
4
Punkte für Reaktionen
0
Punkte
0

merecumbe

Neuer User
Mitglied seit
3 Jan 2008
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Marco,
hier klappts jezt auch :) Das Problem war ein blöder Fehler meinerseits beim Einpflegen Deiner Änderungen in
src/speexdec.c (ab Zeile 737)
Danke für Deine Unterstützung!
Franz

EDIT:
Zwei kleine Änderungen in den Sourcen sind für OS/2 doch noch notwendig:
Code:
--- speexenc.c.orig	2007-12-27 00:52:06.000000000 +0100
+++ speexenc.c	2008-01-12 00:13:50.000000000 +0100
@@ -524,6 +524,8 @@
    {
 #if defined WIN32 || defined _WIN32
          _setmode(_fileno(stdin), _O_BINARY);
+#elif defined OS2
+         _fsetmode(stdin,"b");
 #endif
       fin=stdin;
    }
und
Code:
--- speexdec.c.orig	2008-01-11 23:54:36.000000000 +0100
+++ speexdec.c	2008-01-11 23:59:14.000000000 +0100
@@ -231,6 +231,8 @@
       {
 #if defined WIN32 || defined _WIN32
          _setmode(_fileno(stdout), _O_BINARY);
+#elif defined OS2
+         _fsetmode(stdout,"b");
 #endif
          fout=stdout;
       }
Interessierte finden En- und Decoder für OS/2 kompiliert hier:
http://www.fbakan.de/speex/speex-1.2beta3-fritzboxtam-beta1-os2.zip
 
Zuletzt bearbeitet:

dschu

Neuer User
Mitglied seit
9 Jan 2008
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Hi!
Ich besitze die FB 7110, habe die Firmware mit AB und den MC installiert.
Nun würde ich gerne den Ansagetext ändern. Also habe ich den Ansagetext aufgenommen, als spx-file encoded und .. Ja, genau da hänge ich jetzt. Wo muss die Datei hin? Bei mir gibt es keinen avm_tam Ordner.
Unter /usr/share/ gibt es einen Ordner tam, indem sich ein Soft-Link ~messages befindet. In diesem Ordner befinden sich allerdings keine uvp.0.000 Dateien, sondern fvp Dateien.

Kann mir vielleicht jmd helfen?

(Nebenbei: Wüsste jemand eine Möglichkeit, wie man den Anrufbeantworter zu bestimmten Uhrzeiten aktiviert? z.B. 18-08 Uhr oder so? Das wäre kool)

Dennoch: Hauptproblem ist erstmal, wie ich die Ansage auf die FB aufspiele,
vielen Dank schonmal im Voraus! :)
 

prodigy7

Mitglied
Mitglied seit
28 Mai 2005
Beiträge
735
Punkte für Reaktionen
1
Punkte
18
/data/tam -> uvp.0.000 für Ansage AB 1 usw.
 

dschu

Neuer User
Mitglied seit
9 Jan 2008
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hey, vielen dank für die antwort!
eine möglichkeit das ganze nach der uhrzeit zu steuern kennt keiner so auf die schnelle?
 

Tomekk1985m

Mitglied
Mitglied seit
19 Mrz 2006
Beiträge
300
Punkte für Reaktionen
0
Punkte
16
Hi dschu,

also ich hab mich nun seit längerem mit der neuen FW beschäftigt und solch eine Funktion nicht gefunden. Allerdings denke ich, dass man vielleicht mit hilfe von CronJobs aus dem DS-Mod was machen könnte. Allerdings kann ich dir in der Sache dann nicht weiter helfen. Dafür müsstest du andere Leute fragen.

MfG Tomekk
 

dschu

Neuer User
Mitglied seit
9 Jan 2008
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
vielen dank für die info tomekk!
hm, irgendwie funktioniert es bei mir nicht mit den ab ansagen..
im fritz.box menü wird mir der anrufbeantworter als "600" angezeigt. habe die datei jetzt als uvp.0.600 und als uvp.0.000 liegen (/data/tam/). trotzdem kommt die standardmeldung. mache ich irgendwas falsch? muss ich die neustarten?
 

Tomekk1985m

Mitglied
Mitglied seit
19 Mrz 2006
Beiträge
300
Punkte für Reaktionen
0
Punkte
16
Wie das direkt im Flash der Box aussieht kann ich dir auch ned sagen, weil ich mein AB über meine USB Platte laufen lasse. die datei muss uvp.0.000 heißen das stimmt. wie es weiter aussieht kann ich dir nur sagen wenn du usb speicher benutzt. Dort muss dann ein Ordner namens avm_tam liegen, welchen sich die Box allerdings bei mir selber angelegt hat. dort hinein musste dann die ansage kopieren und übers telefon dann die richtige ansage einstellen.

MfG Tomekk
 

probono

Neuer User
Mitglied seit
8 Mai 2007
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Und hier in kompilierter Form für Mac OS X 10.5 Leopard.

Usage:
speexdec rec.1.001 001.wav
 

Anhänge