Algo de compression à la volée - Algo - Programmation
Marsh Posté le 06-05-2009 à 13:53:06
La compression Huffman n'est pas envisager car il faudrait pouvoir compter la fréquence des caractères sur tout le fichier ou sur de gros morceaux du fichier.
Par contre, un RLE est possible. Cela consiste à remplacer plusieurs blocs (un octet ou un demi-octet, ou autre chose que l'on choisi à l'avance) successif par un seul exemplaire du bloc et un compteur de répetition. C'est simple mais pas toujours très performant, cela dépend du fichier d'origine.
Il y a le LZW, qui est une amélioration du RLE. C'est un chouia compliqué. cela marche en streaming. C'est assez performant sur des fichiers texte mais je ne sais pas ce que cela donne sur des fichiers de sons.
Sans doute que le plus performant serait d'utiliser des algorithmes à base de transformation de Fourrier (FFT pour les rapides). Sans doute que certains logiciels font déjà ça. Il me semble que la compression MP3 ou Vobis fonctionne sur ce principe.
Edit : J'oubliais le zlib, mias il ne marcherait pas car il contient du Huffman.
Marsh Posté le 06-05-2009 à 14:14:41
Alors pour le huffman, je suis d'accord, pas de table de fréquence possible. Le RLE me semble un peu light, défavoriser par un échantillonnage très faible . Et puis c'est de la voix. Et qui dit voix dit harmonique ou Monique pour les intimes. Et la, le RLE , j'ai peur...
Il me semble aussi que le MP3 fait appel à une table de fréquence, a vérifier.
FFT je vais gratter. Merci
En précision, le signal est en acquisition "temps réel".
Marsh Posté le 06-05-2009 à 15:45:37
le mp3 ou l'ogg sont utilisables en streaming, donc ça doit être jouable dans ton cas...il y a probablement un paquet de formats utilisables...
Marsh Posté le 06-05-2009 à 15:53:53
Le mp3 est utilisée en streaming, ça ne veut pas dire que l'on peut encoder a la volée. Le streaming, c'est de la lecture , donc ton fichier est compresser et tu connais la table de fréquence, or dans mon application, tu ne la connais pas car les données ne sont pas en acquises.
Par contre le CEPL de theshockwave va peut-être le faire...........
ahhh merci
Marsh Posté le 06-05-2009 à 15:56:48
carabouille a écrit : Le mp3 est utilisée en streaming, ça ne veut pas dire que l'on peut encoder a la volée. |
Alors je reformule - le mp3 peut être utilisé en streaming avec compression à la volée, et l'ogg idem. Cf les outils de chez www.oddsock.org
Marsh Posté le 06-05-2009 à 16:05:14
carabouille a écrit : Alors pour le huffman, je suis d'accord, pas de table de fréquence possible. |
T'as aussi le droit d'utiliser une table prédéfinie. Ce qui se fait d'ailleurs la majorité du temps quand on compresse du texte.
Marsh Posté le 06-05-2009 à 16:32:59
Sinon y a des algo de transformée en ondelettes qui sont extrêmement rapides / efficaces, ou éventuellement basées sur la transformée de Gabor (mais suivant quel type de signal audio on a, c'est pas toujours super)
Marsh Posté le 06-05-2009 à 17:11:07
Si si, ogg/speex me va , il faut juste le temps de l'implémenter dans mon appli, de monter un démonstrateur, de tester, Et contrairement à certain , c'est pas en 10 minutes devant la télé que je vais réussir
Euh transformée en ondelettes semble très jolie mais c'est quoi le principe??
Pour la table prédéfinie , peut-être mais laquelle prendre ????Elle doit certainement dépendre de la fréquence d'echantillonnage et de la quantification?
Donc maintenant, y a plus qu'a mettre les mains dans le cambouis, euh je veux dire, le clavier.
Merci
Marsh Posté le 06-05-2009 à 12:01:20
Bonjour,
Je recherche un algo de compression à la volée (temps réel) pour pouvoir compresser un signal audio (voix à 8KHz sur 12bits) avec ou sans perte.
Les critères importants sont : encodage à la volée ,taux de compression, taux de perte, complexité de l'algo. De plus si vous avez les sources alors là
Ça doit être très simple mais quand on ne sait pas
Merci d'avance