Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6509 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Watermarking wav

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Watermarking wav

n°1833214
Lou013
Derp Garage Founder
Posté le 02-01-2009 à 17:16:45  profilanswer
 

Bonjour à tous,  
 
Voilà pour un projet, je dois insérer une notion de temps dans un fichier wav (je me suis limité à un mono 8bits).
 
Il faudrait pour bien faire, insérer des tops (1 pour les secondes et 2 pour les minutes) dans ce fichier sans le dégrader et en utilisant la technique du bit de poids faible.
 
Je comprends tout le système de masque mais je ne vois pas comment je pourrais insérer mes "tops" (qui doivent être inaudibles) et pouvoir ensuite permettre à quelqu'un de les retrouver...
 
Quelqu'un aurait une piste à me proposer ?


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
mood
Publicité
Posté le 02-01-2009 à 17:16:45  profilanswer
 

n°1833361
jagstang
Pa Capona ಠ_ಠ
Posté le 03-01-2009 à 13:21:39  profilanswer
 

dans un premier temps, tu mets les bits de poids faible à 0. puis tu repasse en mettant un 1 pour les secondes, et deux 1 pour les minutes...

 

regarde par là :
http://www.thisisnotalabel.com/How [...] and-VB.php


Message édité par jagstang le 03-01-2009 à 14:51:23

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1833465
Lou013
Derp Garage Founder
Posté le 03-01-2009 à 20:04:15  profilanswer
 

Merci pour ta réponse,  
 
Oui c'est ce que j'ai fait dans un premier temps.
 
Je dois donc modifier les bits de poids faible aux alentours de la valeur 127 (puisque les valeurs d'un wav sont entre -1 et 1, je les multiplie par 127 puis je leur ajoute 127 pour obtenir une échelle 0-255)  
 
Cependant, pour initialiser tous les échantillons du son (mettre les bits de poids faibles à 0), ça prend un temps infini (je développe en Matlab)...
 
Que faire donc :s ?


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833648
jagstang
Pa Capona ಠ_ಠ
Posté le 04-01-2009 à 16:43:03  profilanswer
 

ça prend pas un temps infini... Mais un certain temps. quelle est la taille de ton échantillon ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1833670
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 17:19:18  profilanswer
 

Oui, c'était pour dire que ça prenait pas mal de temps...
 
Mais Matlab est hyper lent pour les boucles, j'ai un son de 3 secondes à peu près soit 71000 échantillons de 8 bits...


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833680
Joel F
Real men use unique_ptr
Posté le 04-01-2009 à 17:32:24  profilanswer
 

En matlab, la loi n°1 c'ets jamais de faire de boucle mais d'ecrire sous forme matricielle direct. Ensuite, le pb c'ets que matlab et les manip de bits = LOL.

n°1833715
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 18:32:07  profilanswer
 

En fait je ne vois pas comment je pourrais écrire mon programme sous forme matricielle...
 
Je prends donc chaque échantillon de mon son que je transpose de 0 à 255, je le mets en vecteur binaire puis je dois lui modifier 1 ou 2 bits...
 
Comment je pourrais faire ?  
 
Et par LOL tu veux dire que c'est impossible ? :D


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833730
jagstang
Pa Capona ಠ_ಠ
Posté le 04-01-2009 à 18:54:05  profilanswer
 

ben ça à l'air possible...
 

Citation :

Integer Bit Manipulation Functions
The ops directory contains commands that permit bit-level operations on integers. Operations include setting and unsetting, complementing, shifting, and logical AND, OR, and XOR.
 
Table 1-14: New Bitwise Functions   Function
 Description
bitand
 Bitwise AND.
bitcmp
 Complement bits.
bitget
 Get bit.
bitmax
 Maximum floating-point integer.
bitor
 Bitwise OR.
bitset
 Set bit.
bitshift
 Bitwise shift.
bitxor
 Bitwise XOR.


 
 
http://www.uni-kassel.de/hrz/serve [...] /ch14.html


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1833731
esox_ch
Posté le 04-01-2009 à 18:54:13  profilanswer
 

Non ça veut dire que c'est un peu comme sortir Comsol pour regarder le champ magnétique généré par un fil rectiligne : ça va marcher mais c'est juste démesuré comme outil ..  
Pour faire des opérations bit / bit utilise du C/C++ ou alors un autre langage que tu maitrises mieux (Java, Ruby, Python,...), mais laisse matlab tranquille si t'as le choix


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1833749
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 19:03:24  profilanswer
 

Je n'ai malheureusement pas le choix...


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
mood
Publicité
Posté le 04-01-2009 à 19:03:24  profilanswer
 

n°1833755
esox_ch
Posté le 04-01-2009 à 19:05:25  profilanswer
 

Alors utilise ce que t'as présenté jagstang ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1833756
jagstang
Pa Capona ಠ_ಠ
Posté le 04-01-2009 à 19:06:43  profilanswer
 

et à mon avis c'est beaucoup plus rapide qu'avec une boucle...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1833765
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 19:12:06  profilanswer
 

jagstang a écrit :

ben ça à l'air possible...

 
Citation :

Integer Bit Manipulation Functions
The ops directory contains commands that permit bit-level operations on integers. Operations include setting and unsetting, complementing, shifting, and logical AND, OR, and XOR.

 

Table 1-14: New Bitwise Functions   Function
 Description
bitand
 Bitwise AND.
bitcmp
 Complement bits.
bitget
 Get bit.
bitmax
 Maximum floating-point integer.
bitor
 Bitwise OR.
bitset
 Set bit.
bitshift
 Bitwise shift.
bitxor
 Bitwise XOR.

 


http://www.uni-kassel.de/hrz/serve [...] /ch14.html

 

Merci de ta recherche mais je sais que c'est possible...

 

Je réexplique le fonctionnement du programme:

 

1)lire un son, pour chaque échantillon, initialiser 2 bits à 0

 

2)à chaque seconde mettre 1 de ces bits à 1

 

3)à chaque minute mettre les 2 bits à 1

 

4)Réencoder en Wav

 

Maintenant

 

1) lire le son wav qu'on a réencodé

 

2) lire les 2 bits choisis pour chaque échantillon

 

3) à chaque fois qu'on lit 1 bit à 1 ==> on affiche seconde

 

4) à chaque fois qu'on lit les 2 bits à 1 ==> on affiche minute

 


Je rencontre des problemes pour initialiser ces bits à 0 (quand je ré-ouvre le fichier que jai réencodé, la valeur des bits a changé  :??: )
et donc afficher ce que je veux...

 


J'ai utilisé les fonctions dec2binvec pour transformer chacun de mes valeurs de mon fichier wav en un vecteur de 8 bits, puis je fais mes opérations dessus (or, and,...)

 

C'est pas bon? Je suis vraiment paumé là :(


Message édité par Lou013 le 04-01-2009 à 19:14:02

---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833767
Joel F
Real men use unique_ptr
Posté le 04-01-2009 à 19:13:24  profilanswer
 

par LOL, j'entends les perfs.
 
Quand je dis matricielle, je veut dire elementwise.
au lieu d'ecrire :
 
for(i=1:100)
 a(i) = toto(a,i);
 
ecrire
a = toto(a);
 
aka trouver une formulation data-oriented de l'algo et l'ecrire cash.

n°1833772
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 19:19:16  profilanswer
 

Joel F a écrit :

par LOL, j'entends les perfs.
 
Quand je dis matricielle, je veut dire elementwise.
au lieu d'ecrire :
 
for(i=1:100)
 a(i) = toto(a,i);
 
ecrire
a = toto(a);
 
aka trouver une formulation data-oriented de l'algo et l'ecrire cash.


 
Ah ok,  
 
Mais j'ai du mal à comprendre comment tu voudrais procéder...
 
J'ai tous mes éléments et je leur faire subir des transformations, comment je peux faire ça sans boucles ?  
(y'en a 70 000)  
 


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833785
Joel F
Real men use unique_ptr
Posté le 04-01-2009 à 19:38:40  profilanswer
 

donne moi l'algo pr calculer un element

n°1833830
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 20:23:17  profilanswer
 

Code :
  1. while (n<=taille)
  2.              
  3.               s(n,1)=s(n,1)*127;
  4.               s(n,1)=s(n,1)+127;
  5.               s(n,1)=uint8(s(n,1));
  6.               t1=s(n,1);
  7.               t2=dec2binvec(t1,8);
  8.               t1=and(init,t2)
  9.               t2=binvec2dec(t1);
  10.               s(n)=t2;
  11.               n=n+1;
  12.                          
  13. end;


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833833
esox_ch
Posté le 04-01-2009 à 20:36:27  profilanswer
 

Étonnant que ça s'éternise en effet [:k-nar]  
Tu te rend compte que, ne serait-ce que les 2 premier steps de ton algo, DOIVENT être fait sous forme matricielle ?  
Après, regarde dans la doc s'il existe un AND qui prend comme argument des matrices .
Probablement tu devras créé un revoir un peu ta variable init pour qu'elle contienne une matrice qui va bien ... Mais là ce que tu demandes de faire c'est carrément pas optimisé matlab :|


Message édité par esox_ch le 04-01-2009 à 20:36:45

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1833851
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 22:01:04  profilanswer
 

Je suis limite débutant en Matlab et je n'ai reçu aucune notions sur le développement en forme Matricielle, c'est pourquoi j'ai du mal à optimiser tout ça, sinon je ne serais pas ici...
 
De plus, le résultat demandé pour ce projet a mis très longtemps à être compris car assez mal expliqué.  
 
 
 
 


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833856
Joel F
Real men use unique_ptr
Posté le 04-01-2009 à 22:09:59  profilanswer
 

En une passe matricielle :
 

Code :
  1. r=binvec2dec(and(init,dec2binvec(uint8(s*127+127),8)));


n°1833887
Lou013
Derp Garage Founder
Posté le 04-01-2009 à 23:47:18  profilanswer
 

merci, je vais essayer de comprendre et intégrer tout ça :)


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
n°1833906
esox_ch
Posté le 05-01-2009 à 08:26:17  profilanswer
 

Il y a rien à comprendre :o
Il a juste pris tes instructions et les a modifiées pour que ça s'applique directement à la matrice d'entrée, et non pas à 1 element (nécessitant donc une boucle)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1834101
Lou013
Derp Garage Founder
Posté le 05-01-2009 à 15:28:44  profilanswer
 

La prog c'est pas mon fort, je suis en finalité réseaux et télécom mais j'ai un peu de traitement de signal donc voilà, mais je me soigne, en tout cas merci à tout le monde ;)


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Watermarking wav

 

Sujets relatifs
Plus de sujets relatifs à : Watermarking wav


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)