L'enregistrement mp3 en temps réel, 2ème partie

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Bild des Autors]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in nl Philip de Groot

nl to en Philip de Groot

en to fr Laurent Richard

AboutTheAuthor:[Über den Autor]

Il va bientôt obtenir son doctorat à l'université de Nijmegen avec pour sujet la chimiométrie. Il aime travailler avec Linux et écrit régulièrement ses expériences.

Abstract:[Zusammenfassung]

Cet article est la suite d'une précédente publication à propos de l'enregistrement de mp3 en temps réel d'émissions radio par exemple. Dans le précédent article, nous montrions comment un gros fichier mp3 est obtenu, par exemple 650 MB pour 12 heures ou 1.3 gigabytes pour 24 heures de musique approchant la qualité CD (128 kbit/s; stereo). Comment manipuler un tel fichier ? Est-il possible de faire des enregistrements encore plus longs ou de compresser la musique encore mieux ? Qu'en est-il de la qualité des enregistrements de mp3 ? Nous allons nous attacher à répondre à ces questions.

ArticleIllustration:[Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel]

Editer des fichiers mp3

Supposons que vous ayez fait un magnifique enregistrement de 24 heures, par exemple le Top 300 des années 80 comme diffusé sur Loostad radio, et que vous vouliez partager ce fichier en d'autres fichiers plus petits, et donc plus appropriés. Pendant le processus de partage, vous voulez aussi enlever les publicités et les bulletins d'actualité. Comment faire cela au mieux ? Une façon de le faire aurait été de :
Théoriquement, ce procédé fonctionnerait et contrairement à une idée reçue, le réencodage d'un signal mp3 décodé avec le même algorithme mp3 n'a pas comme conséquence une perte de qualité. Il y a cependant dans la pratique quelques problèmes:

En bref, vous avez besoin d'un programme qui soit capable d'éditer les fichiers mp3 PROPREMENT DITS ! De tels programmes existent, mais pas (pour le moment) sous Linux. Un certain nombre de ces programmes sont disponibles sous Windows, mais la plupart ont un gos problème: ils ne sont pas capables de manipuler un fichier mp3 d'une taille de 650 MB! J'ai trouvé un programme qui est capable de faire le travail, si vous êtes patient: l'éditeur mp3 'Manns'. J'utilise ce programme sous Windows98. Dans l'interface graphique, vous pouvez indiquer le commencemment et la fin du morceau désiré du fichier mp3 initial. Vous pouvez copier ce morceau dans un nouveau fichier avec la commande 'trim'. Ce programme est un 'donationware ', ce qui signifie que vous n'êtes pas obligés de le payer, mais vous êtes invités à le faire si le programme convient à vos besoins. Ce programme a deux inconvénients: il est terriblement LENT sur un fichier de 650 MB et il peut seulement manipuler des taux CONSTANTS !!! La recherche du début de la dernière heure, par exemple dans un enregistrement mp3 de 24 heures, prend un bon moment et réclame des accès disque énormes. Toutefois, découper le morceau désiré du fichier mp3 est très rapide (sans perte de la qualité mp3). Jusqu'ici, je n'ai rencontré aucun problème concernant l'écoute du fichier mp3 après utilisation de cet éditeur. Néanmoins, je contrôle toujours les fichiers extraits en les chargeant dans l'éditeur de mp3. Si le chargement se déroule correctement, les fichiers extraits sont corrects. Durant mes premières expériences avec cet éditeur, il m'est arrivé de cliquer sur le bouton 'trim' pendant des accès importants au disque. La conséquence a été que les fichiers mp3 endommagés n'étaient plus lisibles ! Pour vous donner une indication: l'édition d'un fichier de 650 MB réclame approximativement 1 heure, surtout passée à attendre (ce qui peut être très frustrant)!

Créer des enregistrements de mp3 de longue durée (>24 heures)

Rien n'empêche de réaliser des enregistrement de 24 heures à partir d'une émission de radio. Le fichier reste raisonnablement petit (par exemple 1,3 Go pour 24 heures) et peut facilement être enregistré sur le disque dur. Le problème est différent si vous voulez faire un enregistrement de, par exemple, une semaine. Il ne tiendra probablement pas sur votre disque dur et vous voudrez surmonter ce problème. Je me suis trouvé dans cette situation lors de l'enregistrement de 'Alltimes Top 2000' pendant la période de Noël et du Nouvel An 2000 (144 heures de musique!), diffusé par la station de radio nationale publique des Pays-Bas: Radio 2. Mon disque dur était beaucoup trop petit pour pouvoir sauvegarder tous les enregistrements, donc j'ai dû résoudre le problème d'une autre façon. Voici la recette pour y parvenir:
J'ai employé le procédé ci-dessus pour enregistrer le Top2000 complètement et sans aucun problème ! J'ai utilisé 12 CD de sauvegarde qui ne seront plus jamais utilisés, mais vous devez faire quelques dépenses pouvoir obtenir ce genre d'enregistrements. Comment ça fonctionne ? J'ai eu l'idée en lisant le CD-Burning-Howto et les étapes néccessaires sont expliquées ci-desous.:


L'avantage de cette approche est l'utilisation réduite du processeur, pour créer les CD mp3. Les images existent déjà ! Vous pouvez automatiser la procédure complète en utilisant un script: monter les images, commencer l'enregistrement des mp3, terminer l'enregistrement des mp3 et démonter l'image après 12 heures d'enregistrement, monter une deuxième image et continuer l'enregistrement des mp3, et ainsi de suite. J'ai gravé les CD manuellement, juste au cas où certains problèmes se présenteraient (ce qui fut le cas une fois, pour cause de support défecueux). Pour cette raison, j'ai créé 4 images: 3 images de secours au cas où je rencontrerais des problèmes lors de la gravure de CD (en me donnant au maximum 36 heures pour résoudre le problème). Le script que j'ai utilisé ressemble à celui-ci:


#!/bin/sh
echo "loading modules for sound support..."
modprobe -k snd-card-sb16
modprobe -k snd-pcm-oss
modprobe -k snd-mixer-oss
echo "setting mixer..."
amixer set Line 31 unmute capture; amixer set Master 31; amixer set PCM 31
cd /where/ever/you/stored/the/images/
for i in 1 2 3; do
	for ii in 1 2 3 4; do
	echo "mounting image_$ii on /mnt ..."
        mount -t ext2 -o loop=3D/dev/loop1 image_$ii /mnt
        echo "starting mpegrec ..."
        mpegrec -b 128 -x -mj -o /mnt/top2000_$ii.mp3
	echo "umount /mnt"
        umount /mnt
	done
done

J'ai tout fait SANS X Window, utilisant le prompt Bash. J'ai chargé le support du son manuellement, ainsi que l'émulation OSS (nécessaire pour obtenir des pilotes ALSA qui fonctionnent) et le pilote du mixeur (bien sûr, vous pouvez automatiser ceci en utilisant un déclencheur pré-installation/post-installation dans /etc/conf.modules). La quatrième ligne configure le mixeur correctement : la source d'enregistrement est 'line-in' et le volume a été ouvert au maximum . Après réglage de ces options, le script gère le montage et le démontage des images. En ce qui concerne les options de mpegrec: '-mj' indique un enregistrement stéréo combiné. J'ai fait ceci parce que j'espérais des fichiers mp3 plus petits en utilisant cette option (ils devaient tous tenir sur 670-680 MB). Ceci s'est révélé faux: le fait d'utiliser les enregistrements stéréo ou combiné-stéréo n'est pas pris en compte ! Quand je ferai de nouveaux enregistrements, j'utiliserai la stéréo ordinaire. Le programme 'mpegrec' devrait s'arrêter après 12 heures. Pour réaliser cette tâche, j'ai adapté le code source et j'ai changé le maximum de 24 heures (qui est simplement donné dans le code source) en 12 heures. Malheureusement, cette approche n'a pas fonctionné: le programme a continué d'enregistrer après 12 heures! J'ai dû arrêter l'enregistrement toutes les 12 heures (on n'a rien sans rien...). Le script a pris soin des parties restantes. Je ne comprends plus rien à 'mpegrec': je devrais étudier le code source très attentivement...

Note:
La version la plus récente de cdrecord (cdrecord-1.9) m'a posé des problèmes avec la création des CD. La version précédente, cdrecord-1.8.1, fonctionnait sans aucun problème. J'ai résolu cela en faisant évoluer les micrologiciels de mon graveur CD, un Philips CDD 3610, de la version 3,02 à la version 3,09. Au début, j'espérais que les problèmes de gravure CD étaient provoqués par le noyau 2.4.3, mais ceci a semblé être faux!

La qualité des enregistrements mp3

En raison des discussions sur mon précédent article via la page anglaise de discussion , j'ai reçu un lien vers un site Web contenant des informations intéressantes à propos de l'enregistrement de mp3. La qualité mp3 et la connection mp3-bitrate y est particulièrement bien expliquée, se concentrant sur le programme 'lame'. L'adresse est: http://www.r3mix.net/.


Récapitulation des faits les plus importants:

Tout ceci est discuté en détail sur le site web mentionné si dessus!

Créer des enregistrements mp3 aussi petits que possible

Ci-dessous, je discuterai d'un script qui a été soumis par un lecteur (par courrier électonique). Le script ressemble à ce qui suit:


#!/bin/bash

echo "record $1 named ($3) for $2 seconds"
aumix -f ~/.aumixrc
/usr/bin/yes x | /usr/bin/radio $1 >/dev/null 2>/dev/null
sox -V -r 44100 -c 2 -t ossdsp -w -s /dev/dsp -t wav - 2>/dev/null |
lame - ~/$3.`/bin/date "+%H%M.%m-%d-%y"`.mp3 --resample 16 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice&
sleep $2
kill -9 $!
# copiez la sortie vers un répertoire différent. Si vous le souhaitez,
# remplacez cp par rcp ou scp et copiez vers une autre machine :
cp $3.*`/bin/date "+.%m-%d-%y"`.mp3 /tmp/outputdir

Le but principal du script est d'obtenir des enregistrements radio compréhensibles qui ne nécessitent que 3.5 Mo/heure d'espace disque! Par compréhensible, je veux dire qu'on devrait pouvoir interpréter les paroles de l'enregistrement. Bien sûr, la qualité de la musique est horrible! La première ligne du script configure le mixeur et lance un programme de carte radio et 'sox'. Le 'truc' réside dans les options de 'lame', que nous allons étudier maintenant:

--resample 16 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice
--resample 16 Redefinit la fréquence d'échantillonage du fichier de sortie de 44 kHz à 16 kHz.
-b 8 Fixe la fréquence d'échantillonage à 8 kbit/s (bouh !).
-a Combine le canal stéreo à un enregistrement mono.
-m m Force l'encodage mp3 en mono.
-h Une option pour utiliser la haute-qualité d'enregistrement mp3 (plus lent).
--lowpass 4 Fixe le filtre 'lowpass' à une valeur de 4 kHz. Tous les signaux (fréquences) plus élevée que 4 kHz sont retirés.
--highpass .12 Fixe le filtre 'highpass' à une valeur de .12 kHz. Tous les signaux (fréquences) en dessous de .12 kHz sont retirées.
--voice Utilise une technique de compression mp3 optimisée pour la parole.

Il est clair qu'un compactage élevé peut être obtenu pour la parole. La plupart du temps, ceci ne sera pas choisi. Maintenant, au moins la possibilité est indiquée!

Un script standard pour créer des enregistrements mp3

Ce script a été envoyé via les pages de discussion (j'apprécie ce choix; chacun peut profiter de cette information !). C'est le grand avantage des pages de discussion disponibles pour l'article précédent (et également pour l'article actuel). Chacun peut signaler ses expériences, demander un conseil à d'autres visiteurs si des ennuis surgissent, en bref: une quantité d'information énorme est rassemblée et (si tout va bien) est disponible pour chacun! Le script, appelé 'mp3_record', ressemble à ce qui suit:

#!/bin/sh
 /usr/local/bin/mpegrec \
 -l 5400 \
 -x '--preset fm \
 --tt "Computers in Your Life" \
 --tl "Open Line with Tom Wieble" \
 --ta "Tom Wieble" --ty `date +%Y` \
 --tg "Speech" \
 --tc "Copyright (c) 1997 - `date +%Y` WOSU" -c' \
 -o open_line_`date +%d%b%y`_`date +%H%M`.mp3

L'option '-l 5400' fixe le temps d'enregistrement à 90 minutes. Toutes les options après '-x' sont directement redirigées vers 'lame' (lignes 4 à 9) et l'option '-o' sauvegarde le fichier sous 'date_et_heure.mp3'. Ces lignes peuvent être adaptées comme vous le souhaitez. A cette fin, il pourrait être intéressant de se pencher de plus près sur les option de 'lame'. Les options actuelles sous expliquées dans le tableau ci-dessous:

=
--preset fm Lame connaît certains réglages standards. 'fm' sert aux enregistrements d'émissions en fm, mais je n'aime pas les qualités d'enregistrement comparé au taux d'échantillonage standard de 128 kbit/s. La raison principale vient des filtres appliqués dans 'lame'.
--tt "Computers in Your Life" '--tt' définit le titre de l'enregistrement (30 caractères max).
--tl "Open Line with Tom Wieble" '--tl': album, ou: source originelle (30 caractères max).
--ta "Tom Wieble" --ty `date +%Y` '--ta': artiste (30 caractères max).
--tg "Speech" '--tg': genre (nom ou numéro).
--tc "Copyright (c) 1997 - `date +%Y` WOSU" -c" '--tc': commentaires (informations complémentaires; 30 caractères max).

En résumé: une manière agréable de créer un fichier mp3, incluant une date d'enregistrement et l'heure et pouvant inclure toute sorte d'information complémentaire. Ecrire tout cela dans un script réclame du temps, mais c'est bien de voir que c'est réalisable !