GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Traitement audio scientifique, partie II - Comment créer un traitement mathématique du signal de base dans les fichiers audio à l'aide d'Ubuntu avec Octave 4.0

Dans le didacticiel précédent, nous avons vu les étapes simples pour lire, écrire et lire des fichiers audio. Nous avons même vu comment synthétiser un fichier audio à partir d'une fonction périodique telle que la fonction cosinus. Dans ce didacticiel, nous verrons comment ajouter des signaux, multiplier les signaux (modulation) et appliquer certaines fonctions mathématiques de base pour voir leur effet sur le signal d'origine.

Ajout de signaux

La somme de deux signaux S1(t) et S2(t) donne un signal R(t) dont la valeur à tout instant est la somme des valeurs additionnées des signaux à cet instant. Juste comme ça :

R(t) =S1(t) + S2(t)

Nous allons recréer la somme de deux signaux dans Octave et voir l'effet graphiquement. Dans un premier temps, nous allons générer deux signaux de fréquences différentes pour voir le signal résultant de la somme.

Étape 1 :Création de deux signaux de fréquences différentes (fichiers ogg)

>> sig1='cos440.ogg';                  %creating the audio file @440 Hz
>> sig2='cos880.ogg';                  %creating the audio file @880 Hz
>> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1,cos(w1),fs);        %writing the function cos(w) on the files created
>> audiowrite(sig2,cos(w2),fs);


Ici, nous tracerons les deux signaux.

Tracé du signal 1 (440 Hz)

>> [y1, fs] = audioread(sig1);
>> plot(y1)

Tracé du signal 2 (880 Hz)

>> [y2, fs] = audioread(sig2);
>> plot(y2)


Étape 2 :Ajouter deux signaux

Nous effectuons maintenant la somme des deux signaux créés à l'étape précédente.

>> sumres=y1+y2;
>> plot(sumres)

Tracé du signal résultant


L'effet Octaver

Dans l'Octaver, le son fourni par cet effet est caractéristique car il émule la note jouée par le musicien, soit dans une octave inférieure ou supérieure (selon qu'il a été programmé), couplé avec le son de la note d'origine, c'est-à-dire que deux notes apparaissent sonnant de manière identique.

Étape 3 :Ajout de deux signaux réels (exemple avec deux pistes musicales)

Pour cela, nous utiliserons deux pistes de Chants grégoriens (échantillonnage de voix).

Piste d'Avemaria

Tout d'abord, lira et tracera une piste Avemaria :

>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)

Piste Hymnus

Maintenant, va lire et tracer une piste d'hymne

>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)

Avemaria + Hymnus Track

>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)




Le résultat, du point de vue audio, est que les deux pistes sonnera mitigé.

Produit de deux signaux


Pour multiplier deux signaux, nous devons utiliser une méthode analogue à la somme. Utilisons les mêmes fichiers créés précédemment.

R(t) =S1(t) * S2(t)



>> sig1='cos440.ogg';                  %creating the audio file @440 Hz
>> sig2='cos880.ogg';                  %creating the audio file @880 Hz
>> product='prod.ogg';                 %creating the audio file for product
>> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1, cos(w1), fs);      %writing the function cos(w) on the files created
>> audiowrite(sig2, cos(w2), fs);
>> [y1,fs]=audioread(sig1);
>> [y2,fs]=audioread(sig2);
>> audiowrite(product, y1.*y2, fs);    %performing the product
>> [yprod,fs]=audioread(product);
>> plot(yprod);                        %plotting the product


Remarque :nous devons utiliser l'opérande '.*' car ce produit est fabriqué, valeur à valeur, sur les fichiers d'arguments. Pour plus d'informations, veuillez vous référer au manuel d'opérations du produit avec des matrices d'Octave.

Tracé du signal produit résultant

Effet graphique de la multiplication de deux signaux avec une grande différence de fréquence fondamentale (principes de Modulation)

Étape 1 :

Créez un signal de fréquence audio avec une fréquence de 220 Hz.

>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);


Étape 2 :

Créez un signal de modulation de fréquence plus élevée de 22 000 Hz.

>> y2=cos(100*w);
>> plot(y2);

Étape 3 :

Multiplier et tracer les deux signaux.

>> plot(y1.*y2);


Multiplier un signal par un scalaire

L'effet de multiplier une fonction par un scalaire revient à modifier leur portée et, dans certains cas, le signe de la phase. Etant donné un scalaire K, le produit d'une fonction F(t) par le scalaire est défini comme :

R(t) =K*F(t)


>> [y,fs]=audioread('cos440.ogg');        %creating the work files
>> res1='coslow.ogg';               
>> res2='coshigh.ogg';
>> res3='cosinverted.ogg';
>> K1=0.2;                                %values of the scalars
>> K2=0.5;
>> K3=-1;
>> audiowrite(res1, K1*y, fs);            %product function-scalar
>> audiowrite(res2, K2*y, fs);
>> audiowrite(res3, K3*y, fs);

Tracé du signal d'origine
>> plot(y)

Tracé d'un signal dont l'amplitude a été réduite de 0,2

>> plot(res1)


Tracé d'un signal dont l'amplitude a été réduite de 0,5

>> plot(res2)


Tracé d'un signal avec phase inversée

>> plot(res3)

Conclusion


Les opérations mathématiques de base, telles que la somme algébrique, le produit et le produit d'une fonction par un scalaire sont l'épine dorsale d'opérations plus avancées parmi lesquelles l'analyse de spectre, la modulation en amplitude, la modulation angulaire, etc. tutoriel, nous verrons comment effectuer de telles opérations et leurs effets sur les signaux audio.


Ubuntu
  1. Comment configurer un cluster MongoDB à l'aide de 3 nœuds avec Ubuntu 16 ?

  2. Comment créer un serveur Minecraft avec Hostinger, Ubuntu, Windows et macOS

  3. Comment surveiller les fichiers journaux du serveur avec Logwatch sur Debian et Ubuntu

  4. Traitement audio scientifique, partie III - Comment appliquer des effets de traitement mathématique avancés sur des fichiers audio avec Octave 4.0 sur Ubuntu

  5. Traitement audio scientifique, partie I - Comment lire et écrire des fichiers audio avec Octave 4.0.0 sur Ubuntu

Comment rechercher et supprimer des fichiers en double dans Ubuntu à l'aide de Fdupes

Comment transférer en toute sécurité des fichiers entre des systèmes Ubuntu à l'aide de Croc

Comment nettoyer votre système Ubuntu à l'aide de l'outil Bleachbit

Comment créer un dossier temporaire dans Ubuntu à l'aide de MKTemp

Comment créer un projet HTML5 de base dans Ubuntu à l'aide de Netbeans

Comment rendre un fichier texte créé dans Ubuntu compatible avec le bloc-notes Windows ?