web-dev-qa-db-fra.com

Outil de ligne de commande pour identifier les spécifications de fichier audio

Je recherche un fichier audio équivalent à ImageMagick's Identify Commande.

Par exemple, avec identify, je peux avoir une brève information sur un tas d'images:

% identify b*
banner1.jpg JPEG 134x614 134x614+0+0 8-bit DirectClass 38.4kb 
banner.jpg[1] JPEG 772x307 772x307+0+0 8-bit DirectClass 37.5kb 
bg2.jpg[2] JPEG 103x1500 103x1500+0+0 8-bit DirectClass 43kb 
bg_control_nav.png[3] PNG 13x39 13x39+0+0 8-bit DirectClass 1.73kb 
bg_direction_nav.png[4] PNG 104x52 104x52+0+0 8-bit DirectClass 3.3kb 

J'aimerais obtenir des informations similaires sur mes fichiers audio.

Mon objectif éventuel est de créer un script pour traverser toute ma bibliothèque MP3 et d'identifier ceux déchirés dans des débits plus bas, puis utilisez ces données pour rier mon CDS (ou acheter des versions de meilleure qualité depuis Amazon ou iTunes).

Solutions pour OS X/Linux préférées aux solutions Windows

12
Doug Harris

Sur OS X, vous pourriez simplement utiliser mdls ou mdfind.

$ mdls 01\ Kindred.mp3 
kMDItemAlbum                   = "Kindred EP"
kMDItemAudioBitRate            = 320000
kMDItemAudioChannelCount       = 2
kMDItemAudioSampleRate         = 44100
kMDItemAudioTrackNumber        = 1
kMDItemAuthors                 = (
    Burial
)
kMDItemComment                 = "HDB059"
kMDItemContentCreationDate     = 2012-03-19 21:20:59 +0000
kMDItemContentModificationDate = 2012-06-04 16:07:09 +0000
kMDItemContentType             = "public.mp3"
kMDItemContentTypeTree         = (
    "public.mp3",
    "public.audio",
    "public.audiovisual-content",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2012-04-02 19:49:07 +0000
kMDItemDisplayName             = "01 Kindred.mp3"
kMDItemDurationSeconds         = 686.08
kMDItemFSContentChangeDate     = 2012-06-04 16:07:09 +0000
kMDItemFSCreationDate          = 2012-03-19 21:20:59 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "01 Kindred.mp3"
kMDItemFSNodeCount             = 27457838
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 27457838
kMDItemFSTypeCode              = ""
kMDItemKind                    = "MP3 audio"
kMDItemLogicalSize             = 27457838
kMDItemMediaTypes              = (
    Sound
)
kMDItemMusicalGenre            = "Dubstep"
kMDItemPhysicalSize            = 27459584
kMDItemRecordingYear           = 2012
kMDItemTitle                   = "Kindred"
kMDItemTotalBitRate            = 320000

mdfind -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'

10
Lri

Edit: Il suffit de trouver un programme Linux

Sous Linux, mp3Info :

mp3info -p "%Q %L %v %o %r" test.mp3
output:
48000 III 1.000000 joint stereo

Je sais que vous voulez une solution Linux; Cependant, par la façon dont vous avez indiqué votre question, cela ressemble à une solution Windows n'est pas complètement sorti ...

Sous Windows, tag.exe fera le travail.

Exemple:

C:\mp3>tag.exe "test.mp3"
Tag - Automatic Tag from filename
Copyright (c) 2002-2003 Case.  Minor additions by Neil Popham, 2004-2007
Version 2.0.52, Compiled 2007-05-04

C:\dl\test.mp3
Format:  MPEG 1 Layer 3, Joint Stereo
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
Tag:     ID3v2

Pour simplement obtenir le débit:

C:\mp3>tag.exe "test.mp3" 2>&1 | findstr /i "Details:"
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
5
jftuga

Un utilitaire très simple est SOX
Le mien était préalable sur le système Linux.

 soxi auidofile.wav 

Sortir :

 Input File     : 'Yvette_Audin_F_70_7e.wav154.wav'
 Channels       : 2
 Sample Rate    : 44100
 Precision      : 24-bit
 Duration       : 00:00:10.01 = 441254 samples = 750.432 CDDA sectors
 File Size      : 2.65M
 Bit Rate       : 2.12M
 Sample Encoding: 24-bit Signed Integer PCM

quelque chose de très utile à ce sujet était qu'il m'a permis de convertir une chaîne stéréo à 2 canaux en mono. J'avais besoin de former un modèle d'apprentissage de la machine pour les fichiers audio.

Modifier: Méthode plus facile Conversion 2 canaux audio au signal mono :

 from pydub import AudioSegment  
 song = AudioSegment.from_wav("01.wav")
 song = song.set_channels(1)
 song.export("01.wav", format='wav')
4
Priyank Pathak

FFProbe est votre ami (vous pouvez également utiliser AVCONV, MPLayer; toutes les informations de retour du support, mais FFProbe retourne simplement les informations dont vous avez besoin)

Avec flux:

ffprobe http://96.127.183.74:8604/live

Retour

...
Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 31 kb/s

Avec fichier local:

ffprobe some_file.mp3 

Retour

...
encoder         : LAME 64bits version 3.99.5
...
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
1
aesede