J'essaie d'enregistrer les messages vocaux du téléphone Verizon Fios de la meilleure qualité possible. Les messages vocaux sont disponibles en ligne , mais pour jouer uniquement (lecteur basé sur Java), aucune sauvegarde. Officiellement, il n'existe aucun moyen pris en charge pour enregistrer les messages vocaux numériques originaux sous forme de fichiers à partir du service Fios Digital Voice (pas de service payant, rien, aucune raison).
Ma seule idée était d'enregistrer les données numériques du lecteur pendant le trajet vers la carte son. J'ai essayé la configuration Linux ALSA avec un périphérique en boucle.
# cat /etc/asound.conf
# default device
pcm.!default {
type plug
slave.pcm "loop"
}
# output device
pcm.loopout {
type dmix
ipc_key 328211
slave.pcm "hw:Loopback,0,0"
}
# input device
pcm.loopin {
type dsnoop
ipc_key 686592
slave.pcm "hw:Loopback,1,0"
}
# duplex plug device
pcm.loop {
type plug
slave {
pcm {
type asym
playback.pcm "loopout"
capture.pcm "loopin"
}
}
}
Cela semble fonctionner et enregistre de l'audio, par exemple lors de la lecture de quelque chose sur Youtube, la sortie audio va au périphérique de boucle (sortie audio par défaut) et je peux le capturer (je ne sais pas comment cela fonctionne exactement, j'ai testé à la fois 44,1 kHz et 48 kHz )
arecord -f cd -D loop | aplay -f cd -D hw:0,0
arecord -f dat -D loop | aplay -f dat -D hw:0,0
Mais quand j'ai essayé de capturer la sortie du lecteur audio Java Verizon, elle est tronquée et la longueur ne semble pas correspondre. Je soupçonne qu'il pourrait être mono à 8 kHz et j'ai essayé différentes choses, en changeant la fréquence et les formats, mais rien n'y fait.
Avez-vous une idée de ce qui ne va pas ici et comment enregistrer les messages? Le problème est-il dans la configuration ALSA? Ou peut-être un problème de noyau? (J'utilise 3.4.88). Toutes les idées seraient les bienvenues.
Réponses:
Question intéressante, il y a longtemps, je pensais à un simple enregistrement audio et vidéo numérique, possible via certains pilotes audio et vidéo virtuels, mais je n'y suis jamais arrivé.
J'ai utilisé votre fichier de configuration et j'ai eu exactement le même problème que celui que vous avez décrit. (J'ai supprimé les pilotes de compatibilité OSS d'ALSA pour être sûr, j'ai testé différents noyaux - cela ne semblait pas avoir d'importance et j'ai utilisé Debian Wheezy)
les commandes ci-dessus jouent toutes OK sur les haut-parleurs
enregistre maintenant à partir de la boucle et joue à l'avant
tout envoyer de l'audio en boucle et jouer aux haut-parleurs OK
mais ici le son est cassé - très déformé !!! Il suffit de jouer sur l'appareil par défaut. La lecture spécifiée via la boucle a fonctionné!
Après avoir essayé divers changements, j'ai testé cette modification de asound.conf
Cela a résolu le problème! Lorsque le périphérique par défaut est en boucle, cela fonctionne. En essayant
arecord -f cd -D loopin | aplay -f cd -D front
n'a eu aucun effet. Je ne sais pas comment fonctionne la boucle, mais cela a pu capturer l'audio. Ou un bug dans ALSA? Utilisez-vous Debian? Est-ce que ça marche pour toi?Remarques sur d'autres suggestions pour résoudre le problème:
Pour vider le flux réseau: Je suppose que si l'application ne veut pas que vous enregistriez des données, le transfert serait crypté (https ???). Dans le cas où le joueur ne vérifie pas le certificat du serveur, comment capturez-vous les données? Quelle est votre méthode rapide et facile préférée pour devenir un homme au milieu et capturer le flux?
Pulseaudio: Comment le faire fonctionner sur Debian Wheezy? Le Wiki dit que cela fonctionne. Il n'a pas.
Comment puis-je dépanner ce qui se passe? (Outils, diag?)
Jack: Je n'ai pas trouvé d'instructions simples pour installer Jack. Cela semble assez complexe. Est-ce que cela suppose que Pulseaudio fonctionne? La documentation est déroutante. Avez-vous un lien pour un bon démarrage rapide (comment installer et tester pour vous assurer qu'il fonctionne?)
Supposez-vous que la plupart des applications audio (comme le lecteur Fios Voicemail Java) pourront jouer sur Pulseaudio ou Jack et ne pas envoyer d'audio sur ALSA?
la source
Avez-vous pensé à "modprobe snd-aloop"? Je l'ai essayé et cela fonctionne pour moi avec votre asound.conf sur youtube, pandora, tunein, vonage et ce lecteur java . Cela pourrait être quelque chose de spécifique à Fios, mais je n'ai pas de Fios pour tester. Pouvez-vous trouver un autre site accessible au public qui cause également le problème?
Essayez également d'enregistrer dans un fichier, puis de le lire:
la source
Meilleure idée
Tout d'abord, en lisant votre question, je ne le ferais pas comme ça. J'espionnais le réseau et j'essayais de capturer le flux. C'est probablement dans un endroit assez prévisible qui peut être scénarisé avec un simple appel à
tshark
. C'est une autre question cependant.Amélioration par rapport à ALSA
Bien que votre méthode soit une approche valide, je n'utiliserais pas ALSA. ALSA est une couche d'abstraction matérielle. J'utiliserais le démon de son qui est presque partout PulseAudio. Cela a plus de sens. Créez un puits nul.
Cette commande vous renverra
module id
. Cela ne nous est d'aucune utilité.Maintenant, définissez simplement la variable d'environnement
PULSE_SINK
. (le nom de l'évier dans l'exemple ci-dessus est "MySink")Ou, démarrez un programme avec
PULSE_SINK=MySink
et ce récepteur nul capturera le flux.Chaque fois que vous souhaitez le diffuser dans un fichier, exécutez simplement:
Un opus à faible débit est le meilleur choix pour enregistrer des conversations téléphoniques.
Notes de bas de page:
sox
au flux pour cela. Voirman sox
, recherchervad
.--downmix-mono
sur un flux stéréo. Vous pouvez très bien vouloir expérimenter l'envoi de l'channels=1
argument àmodule-null-sink
la première étape. Les téléphones sont tous mono.la source
Après avoir passé plus d'une heure à essayer vainement de configurer le périphérique de bouclage ALSA sur Debian, la solution la plus efficace et la moins longue était de souder un périphérique réel en 5 minutes.
Sérieusement, j'ai recompilé le noyau pour activer le bouclage ALSA, j'ai modifié les fichiers /etc/asound.conf et ~ / .asound.rc sans résultats.
la source
Je recommande fortement d'utiliser JACK. Il s'agit d'un acronyme récursif pour JACK Audio Connection Kit. Il est conçu pour exactement ce que vous faites, acheminant l'audio d'un logiciel, dans votre cas, l'outil de lecture Java à un autre, un logiciel d'enregistrement. Il est très bon pour l'enregistrement à faible latence, ce qui, je pense, peut vous aider à obtenir la qualité que vous recherchez.
Avec lui, vous pouvez facilement acheminer l'audio de n'importe quelle source sur votre ordinateur vers de nombreux outils d'enregistrement différents. En fait, il y a une très belle interface graphique appelée QjackCtl .
Cette page explique comment router l'audio du navigateur (Flash et éventuellement votre outil Java) vers Jack. La procédure à suivre dépend de votre système.
Par exemple:
Modifiez votre
~/.asoundrc
ou~/asound.conf
:Ensuite, vous devriez pouvoir utiliser
la source
pavucontrol
fera la même chose que vousQjackCtl
et vous pourrez toujours bougerpacmd move-sink-input
.pasuspender -- jackd
. Néanmoins, si l'affiche présente des problèmes de qualité, il peut être utile d'essayer quelque chose de si simple. En outre, QjackCtl permet d'ajuster très facilement les paramètres qui donnent un retour visible sur la latence et les xruns, qui sont généralement une cause de brouillage audio .