logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 03-08-2019 16:53:27

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Analyeur bande passante fichier audio en ligne de commande

Bonjour les ami(e)s smile

Je recherche un programme en ligne de commande genre Spec pour analyser mes fichiers audios.

Plus en détail...

Suite à la lecture de ce lien: https://syskb.com/verifier-qualite-audios-mp3-flac/, j'ai décidé de vérifier la qualité de mes 3000 fichiers audio qui sont en général encoder à 256 kbps (bande passante à environ 20000 Hz qui est la limite audible pour le commun des mortels).

Le problème est qu'avec Spec c'est que cela va me prendre en temps fou, donc j'aimerais faire un script afin d'automatiser ma démarche.

Amicalement Slyfox

Hors ligne

#2 04-08-2019 08:47:42

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Bonjour Slyfox smile

tu veux lister par une commande certaines caractéristiques audio sur plusieurs fichiers en même temps, c'est bien ça ?


======== ACCEPT - Symphony No.40 (OFFICIAL LIVE VIDEO).mp3
Audio Bitrate                   : 261 kbps
Sample Rate                     : 44100
======== Soulsister 'The Way To Your Heart'.mp3
Audio Bitrate                   : 259 kbps
Sample Rate                     : 48000
======== WOLF HOFFMANN (Accept) - Pathetique [2017].mp3
Audio Bitrate                   : 272 kbps
Sample Rate                     : 44100
    3 image files read

Dernière modification par Anonyme (04-08-2019 08:48:31)

#3 04-08-2019 11:50:21

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Analyeur bande passante fichier audio en ligne de commande

Bonjour
je verrais bien avec mediainfo
exemple pour analyser tout ton dossier Musiques

mediainfo ~/Musiques/ |less


bon forcement la tu as toute les infos sur le fichier
Edit:
J'ai un peu galéré avec le man mediainfo qui est sur certain point erroné mais pour afficher par exemple juste le nom du fichier et le BitRate
Il faut créer un fichier texte ( a créer avec ton éditeur de texte favori) contenant les lignes suivante

cat ~/mediainfo.txt


General;"%CompleteName%"
Audio;"%BitRate/String%"
File_End;\r\n



Pour connaître la liste différent paramètres valide

mediainfo --Info-Parameters



puis tu fais référence a ton fichier créé dans ta commande
exemple:

mediainfo  --Inform=file:///home/stephane/mediainfo.txt ~/Musique/JacquesBrel-Vesoul.ogg


résultat

/home/stephane/Musique/JacquesBrel-Vesoul.ogg
160 kb/s



Tu peux lister tout ton répertoire et sous répertoire

mediainfo  --Inform=file:///home/stephane/mediainfo.txt ~/Musique/


A savoir que tout fichier contenu dans ton répertoire sera analysé , donc l'opération prendra + de temps en cas de fichier parasite
en cas de gros répertoire l'opération peu prendre quelque minutes et aucun affichage tant que se n'est pas fini
comme le résultat défile d'un coup à l'écran , tu peux utiliser less ou rédiriger vers un fichier que tu pourras consulté avec ton éditeur de texte par la suite
avec less

mediainfo  --Inform=file:///home/stephane/mediainfo.txt ~/Musique/|less



redirigé dans un fichier

mediainfo  --Inform=file:///home/stephane/mediainfo.txt ~/Musique/ > resutat_BitRate.txt



bien sur il faut avant tout installer mediainfo

apt install mediainfo


Sinon il y a aussi
https://debian-facile.org/doc:media:avprobe
mais pas de paquet disponible a ce jour pour Buster

Dernière modification par Croutons (04-08-2019 15:07:41)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#4 04-08-2019 14:55:00

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Bonjour,
les gars, vous êtes sûrs que mediainfo a bien ce que demande Slyfox ?
Je peux vous filer du mp3 en 320 stéréo enregistré sur un dictaphone smile.
Les bit et sample rates de l'encodage ne sont pas gage de bande passante.

#5 04-08-2019 14:56:46

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

mediainfo --Output="General; %OverallBitRate% %CompleteName%\n" *mp3

 
 264313 ACCEPT - Symphony No.40 (OFFICIAL LIVE VIDEO).mp3
 259302 Soulsister 'The Way To Your Heart'.mp3
 280353 WOLF HOFFMANN (Accept) - Pathetique [2017].mp3
 



tongue

#6 04-08-2019 14:59:53

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Anonyme a écrit :

Bonjour,
les gars, vous êtes sûrs que mediainfo a bien ce que demande Slyfox ?
Je peux vous filer du mp3 en 320 stéréo enregistré sur un dictaphone smile.
Les bit et sample rates de l'encodage ne sont pas gage de bande passante.



Moi, je n'en suis pas sûr. D'où le ? sur mon premier post. wink

Dernière modification par Anonyme (04-08-2019 15:00:16)

#7 04-08-2019 15:20:05

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Il y aurait bien sox et l'option spectrogram, mais il faut que les fichiers aient tous le même sample-rate

sox FAIL sox: Input files must have the same sample-rate



Avec des mp3 à 48000 je sors :

spectrogram.png

Mais c'est pas top hmm

Dernière modification par Anonyme (04-08-2019 15:25:11)

#8 04-08-2019 15:28:37

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

#9 04-08-2019 16:37:17

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : Analyeur bande passante fichier audio en ligne de commande

Hello les ami(e)s

Merci t'avoir répondu, par contre j'ai peut-être mal formulé ma requête.

En "général" une oreille humaine perçoit les sons qui ont une fréquence allant de 20 Hz à environ 20000 Hz.

Quand on compresse un fichier audio par exemple en 320 kbps, l'encodeur supprime les fréquences qui sont au delà de 20000 Hz*.

Si on descends le birate par exemple à 96 kbps, l'encodeur coupe les fréquences qui se situe au-dessus de 15000 Hz*.

Maintenant si on reprend le fichier à 96 kbps et qu'on le reconvertit à 320 kbps, on obtient un faux fichier encodé à 320 kbps car dans ce cas là la fréquence restera à 15000 Hz au lieu de 20000 Hz, car tout ce qui a été détruit ne peut-être reconstitué. Maintenant si on analyse ce dernier par exemple avec ffmpeg, il retourne ce résultat:

ffmpeg -i /home/slyfox/Bureau/Korn - Blind - Faux 320k.m4a



Duration: 00:04:17.43, start: 0.000000, bitrate: 321 kb/s

Mais si on utilise Spek, il ne nous montre ça:

1564934127.png

et là on voit bien que ce fichier est un faux 320 kbps !!! (car la fréquence max est bien en dessous des 20000 Hz !!!)

Maintenant pour revenir à ma demande initial j'aimerais faire cette vérification via un terminal qui me retournerais la valeur de la plus haute fréquence audible.


* (valeur pour l'exemple à vérifier...).

NB: J'ai plus de 3000 fichiers à vérifier, pas la peine de me dire fait confiance à ton oreille (!), car ça serait trop long comme vérification... tongue

Dernière modification par Slyfox (04-08-2019 16:42:04)

Hors ligne

#10 04-08-2019 17:51:21

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Ok, là je ne peux pas t'aider. hmm

Le seul truc que j'ai réussi à pondre, c'était un script nautilus qui en sélectionnant différents fichiers, me sortait un spectre en png pour chacun d'eux avec le titre de chaque morceau.
Désolé wink

Dernière modification par Anonyme (04-08-2019 17:52:23)

#11 04-08-2019 19:42:28

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Analyeur bande passante fichier audio en ligne de commande

une solution avec spek , quand je passe par le gestionnaire de fichier Caja j'ai l'option ouvrir avec l'application spek
Je sélectionne les fichiers audio et je les ouvres tous en même temps

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#12 04-08-2019 19:52:06

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : Analyeur bande passante fichier audio en ligne de commande

Croutons a écrit :

une solution avec spek , quand je passe par le gestionnaire de fichier Caja j'ai l'option ouvrir avec l'application spek
Je sélectionne les fichiers audio et je les ouvres tous en même temps



Merci pour cette astuce ! cool

En fait c'est tout bête, je vais utiliser cette astuce pour le moment (c’est déjà plus rapide que d'ouvrir les fichiers les uns après les autres). tongue

Par contre je suis toujours preneur d'une astuce en ligne de commande. smile

Dernière modification par Slyfox (04-08-2019 19:54:02)

Hors ligne

#13 04-08-2019 20:06:36

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

apt get install sox



Script nautilus à mettre dans ~/.config/caja/script

Script Spectre :


#!/bin/bash

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read i
do

OUTFILE="${i%.*}.png"
TITLE_IN_SPEC="${i%.*}"

sox "$i" -n spectrogram -t "$TITLE_IN_SPEC" -o "$OUTFILE"

done

 



C'est rapide wink


Sélectionner les fichiers que l'on veut, puis clic droit contextuel -- Scripts -- Spectre et c'est parti pour les pngs dans le même dossier que la sélection. Il ne fera que ce que l'on a sélectionné par le ctrl + clic gauche souris ou sélection souris tout court.


WOLF_HOFFMANN_Accept_-_Pathetique_2017.png

Soulsister_The_Way_To_Your_Heart.png


EDIT:
Désolé de m'accrocher à Sox, Spek chez moi n'est pas installable "Dépendance pas à jour".

EDIT 2:
Il me semble que les canaux sont identiques chez moi. Il doit y avoir une option qui manque dans ma commande. hmm


Avec ffmpeg aussi :


#!/bin/bash

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read i
do

OUTFILE="${i%.*}.png"
TITLE_IN_SPEC="${i%.*}"

#sox "$i" -n spectrogram -t "$TITLE_IN_SPEC" -o "$OUTFILE"
ffmpeg -i "$i" -lavfi showspectrumpic=s=800x400:mode=separate "$OUTFILE"

done
 



FFMPEGSoulsister_The_Way_To_Your_Heart.png

Dernière modification par Anonyme (04-08-2019 21:05:52)

#14 04-08-2019 21:03:21

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : Analyeur bande passante fichier audio en ligne de commande

J'ai un problème, chez moi sox ne semble pas gérer le format aac et mp3. sad

sox FAIL formats: no handler for file extension `mp3'

Hors ligne

#15 04-08-2019 21:07:34

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Attend, il me semble qu'il faille un paquet en plus .... je regarde ça, j'ai eu le problème quand j'étais sous Debian.

#16 04-08-2019 21:08:28

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Autrement utilise ffmpeg, j'ai édité mon post 13

#17 04-08-2019 21:10:28

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Slyfox a écrit :

J'ai un problème, chez moi sox ne semble pas gérer le format aac et mp3. sad

sox FAIL formats: no handler for file extension `mp3'




apt install libsox-fmt-mp3




Je remet avec juste ffmpeg :


#!/bin/bash

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read i
do

OUTFILE="${i%.*}.png"
TITLE_IN_SPEC="${i%.*}"

#sox "$i" -n spectrogram -t "$TITLE_IN_SPEC" -o "$OUTFILE"
ffmpeg -i "$i" -lavfi showspectrumpic=s=800x400:mode=separate "$OUTFILE"

done
 



FFMPEGSoulsister_The_Way_To_Your_Heart.png

EDIT:

et aussi :


apt install libsox-fmt-all
 

Dernière modification par Anonyme (04-08-2019 21:15:02)

#18 04-08-2019 21:12:38

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : Analyeur bande passante fichier audio en ligne de commande

Anonyme a écrit :

Autrement utilise ffmpeg, j'ai édité mon post 13



Alors là ça me plaît et en plus avec ffmpeg !!! cool cool cool

J'ai une idée de script avec yad...

Hors ligne

#19 04-08-2019 21:16:30

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Il faut  laisser au vieux le temps big_smile

Pour sox, il y a aussi mon edit post 17 wink

#20 04-08-2019 21:19:11

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Tiens, si un jour tu as le temps, essaies :

https://debian-facile.org/viewtopic.php?id=24453

Script fin de post 1

wink

Dernière modification par Anonyme (04-08-2019 21:20:45)

#21 04-08-2019 21:24:37

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Sur le script avec ffmpeg, il y a un truc qui va pas contrairement avec sox, il ne fait que le premier png. Il faut regarder ça de plus près wink

#22 04-08-2019 21:45:45

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : Analyeur bande passante fichier audio en ligne de commande

Anonyme a écrit :

Tiens, si un jour tu as le temps, essaies :

https://debian-facile.org/viewtopic.php?id=24453

Script fin de post 1

wink



C'est clair que ça m'intéresser aussi, je suis en train de programmer un script pour encoder les fichiers audio/video.

Je regarde ça dès que j'ai le temps (j'ai tellement de chose à faire à côté... boulot, métro, dodo)

Hors ligne

#23 04-08-2019 21:49:03

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

wink

Pour ffmpeg : ( En supposant que tu n'ais pas un wav + flac/mp3/...  du même titre dans le même dossier comme moi)



    #!/bin/bash
 


    for FILENAME in "$@"; do
    FILETYPE="$(file -bi "$FILENAME" | awk -F "; " '{print $1}' | awk -F "/" '{print $1}')"
    ## Condition = audio
    if [ "$FILETYPE" != audio ]; then
    echo "Skip non-audio file"
    else
   
   
    if [ "$FILETYPE" == audio ]; then
    FILENAME_IN=$(basename "$FILENAME")
    FILENAME_OUT="$(basename "$FILENAME" | sed 's/\.[^.]*$//').png"
   
   
   
    mate-terminal -x ffmpeg -i "$FILENAME_IN" -lavfi showspectrumpic=s=800x400:mode=separate "$FILENAME_OUT"


    fi
    fi
    done


 

Dernière modification par Anonyme (04-08-2019 21:56:16)

#24 04-08-2019 22:02:01

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : Analyeur bande passante fichier audio en ligne de commande

Voilà un script brut de décoffrage, il y a certainement à améliorer certaines choses.

Il suffit de:
Créer un fichier vierge
Le nommer à souhait (par exemple: analyseur_spectre.sh)
Copier/coller le script ci-dessous dans ce fichier.
Enregistrer le tout
Le rendre exécutable (clic droite sur le fichier --> Propriétés --> Permission --> Cocher "Autoriser l’exécution du fichier comme un programme" --> Fermer).

Installer (si ce n'est pas fait yad et ffmpeg).

apt-get update
apt-get install yad ffmpeg



Pour l'utilisation du script.
Faire un double clic sur le fichier script (analyseur_spectre.sh selon l'exemple) et de choisir "démarrer"
Choisir le dossier ou les fichiers analyser.
Faire le choix de valider ou pas le fichier en cours d'analyse.
Une fois terminé il suffit d'ouvrir dans son /home, le fichier "Fichier à réencoder.txt" qui indique les fichiers de "mauvaise qualité" choisit précédemment.

Script:

#! /bin/bash

# Paquet à installer: yad ffmpeg
#Auteur: Slyfox
#Version: 20190804-1

#=====================================================================================================
function YAD_FILE_IN()
{
fileIn=$(yad --file \
--multiple \
--geometry="1000x550" \
--separator="\n" \
--center \
--file-filter="Fichier media | *mkv *.ogg *oga *.mp4 *.avi *.vob *.flac *.mp3 *.m4a *.opus *.mkv *.webm" \
--file-filter "Tous | *" \
--filename="/$HOME" \
--button="gtk-quit:1" \
--button="gtk-ok:0")

yadStatus="$?"

# Si dossier recherche fichiers
if [[ -d "$fileIn" ]]; then
  fileIn=$(find "$fileIn" -type f -name "*.m4a"
  find "$fileIn" -type f -name "*.mp4"
  find "$fileIn" -type f -name "*.mp3"
  find "$fileIn" -type f -name "*.flac"
  find "$fileIn" -type f -name "*.ogg"
  find "$fileIn" -type f -name "*.oga"
  find "$fileIn" -type f -name "*.mkv"
  find "$fileIn" -type f -name "*.webm")
fi
}
#=====================================================================================================
function STOP()
{
if [[ $yadStatus -eq "1" ]]; then
  exit
 
elif [[ $yadStatus -eq "252" ]]; then
  exit
fi
}
#=====================================================================================================
function MAIN()
{
YAD_FILE_IN
STOP

IFS=$'\n'

for i in $fileIn; do

  ffmpeg -i "$i" -y -lavfi showspectrumpic=s=1100x500:mode=separate /tmp/spectre.png""

  yad --form \
  --title "$i" \
  --geometry="500x350" \
  --borders="25" \
  --image="/tmp/spectre.png" \
  --button="Quitter!gtk-quit:252" \
  --button="Fichier à réencoder!gtk-no:2" \
  --button="Ok, fichier suivant!gtk-ok:0"

  yadStatus="$?"
  STOP

  if [[ "$yadStatus" == "2" ]];then
    echo "$i" >> "$HOME/Fichier à réencoder.txt"
  fi
done

}

MAIN

Dernière modification par Slyfox (04-08-2019 23:09:57)

Hors ligne

#25 05-08-2019 06:51:11

Anonyme
Invité

Re : Analyeur bande passante fichier audio en ligne de commande

Bonjour Slyfox

Je viens de tester wink

Si j'ai bien compris le truc, tu pointes le fichier musical que tu estimes "bidon" ?


Une suggestion, pourquoi ne pas poser une condition si "audio"  au lieu de mettre tous les formats mp3,flac,etc... ?

En tout cas, c'est très interressent ce "flicage" sur certains fichiers.

Donc je résume. J'ai fait un mp3 en 128, je décide de passer ce même fichier un 320 pour le fourguer : c'est pour détecter le truc ?
Dommage que ffmpeg n'est pas l'option pour tagger le titre du morceau sur le png, du moins directement. Car pour ma part, je trouve plus interressant de garder les pngs de chaque morceau dans leur dossiers respectifs.

Dernière modification par Anonyme (05-08-2019 07:23:51)

Pied de page des forums