linux arecord: माइक्रोफोन इनपुट के बजाय साउंड कार्ड आउटपुट कैप्चर करें


20

मैं साउंड कार्ड आउटपुट पर कब्जा करने की कोशिश कर रहा हूं और इसे निम्नलिखित कमांड का उपयोग करके वोरबिस ओग प्रारूप में एनकोड करना चाहता हूं:

arecord -f cd -t raw | oggenc - -r -o file.ogg

हालाँकि, साउंड कार्ड आउटपुट के बजाय कंप्यूटर का माइक्रोफ़ोन इनपुट रिकॉर्ड किया जाता है।

कमांड arecord -lका आउटपुट है

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

arecord -Lइस pastebin प्रविष्टि में कमांड का आउटपुट समाहित है ।

arecordआदमी पेज इंगित करता है कि इनपुट डिवाइस का उपयोग कर चुना जा सकता है -Dझंडा, लेकिन कोई वाक्य उदाहरण देता है।

मैं जानना चाहूंगा arecordकि माइक्रोफोन से साउंड कार्ड के लिए इनपुट कैसे बदला जाए । मुझे GUI- आधारित विकल्पों जैसे कि ऑडेसिटी में कोई दिलचस्पी नहीं है। धन्यवाद।

संपादित करें: मैं arecordसंस्करण 1.0.25, vorbis-toolsसंस्करण 1.4.0, और ALSA ड्राइवर संस्करण 1.0.24 के साथ डेबियन 7.0 (स्थिर) चला रहा हूं।


क्या आपके हार्डवेयर के पास आउटपुट डिवाइस को कैप्चर डिवाइस पर वापस लाने के लिए कुछ मिक्सर नियंत्रण है?
सीएल।

@CL। केवल पूर्व-स्थापित मिक्सर जिसके बारे में मुझे जानकारी है alsamixer। यदि मैं लूपबैक कार्ड का चयन करता हूं alsamixer(साउंड कार्ड का चयन करने के लिए F6 कुंजी), तो मुझे संदेश प्राप्त होता है This sound device does not have any controls। यदि मैं मिक्सर से बाहर निकलता हूं और वापस लौटता हूं, तो मुझे पता चलता है कि साउंड कार्ड लूपबैक से डिफ़ॉल्ट कार्ड में बहाल हो गया है। सस्पेंड करने की कोशिश ( ctrl-z) और पृष्ठभूमि ( bg) alsamixerचयन के बाद की प्रक्रिया कमांड के loopbackमाध्यम से ऑडियो की सफल रिकॉर्डिंग को सक्षम नहीं करती है arecord
user001

कार्ड का चयन alsamixerबाकी प्रणाली को प्रभावित नहीं करता है; यह केवल वही परिवर्तन करता है जो नियंत्रित होते हैं। Conexant डिवाइस के रिकॉर्डिंग चयन नियंत्रण क्या हैं?
सीएल।

@CL। मेरे Conexant डिवाइस के लिए, मेरे पास एक प्लेबैक कंट्रोल ( Master) और एक कैप्चर कंट्रोल ( Capture) है alsamixer। कैप्चर को स्पेसबार के साथ चालू और बंद किया जा सकता है alsamixerऔर यह डिफ़ॉल्ट रूप से चालू रहता है। कृपया मुझे बताएं कि क्या यह आप का इरादा नहीं है। धन्यवाद।
user001

जवाबों:


6

मैं ALSA लूपबैक ड्राइवर का उपयोग करने का सुझाव दूंगा। इसे लोड करने के लिए:

sudo modprobe snd-aloop

इससे आउटपुट में एक नया कैप्चर डिवाइस जोड़ना चाहिए arecord -L

यदि आपके कंप्यूटर में केवल एक ही भौतिक साउंडकार्ड है, तो आप .asoundrcनिम्न सामग्री के साथ अपने होम फोल्डर में एक फाइल बनाकर लूपबैक साउंडकार्ड को सभी ऐप्स के लिए डिफ़ॉल्ट बना सकते हैं :

pcm.!default {
    type hw
    card 1
    device 0
}

हालांकि यह फ़ाइल चालू है, सभी अनुप्रयोगों से कोई भी ध्वनि आउटपुट आपके वास्तविक वक्ताओं के बजाय लूपबैक एडाप्टर पर जाना चाहिए। बस अपने एस्कॉर्ड कमांड में सही डिवाइस को निर्दिष्ट करें और एक बार काम पूरा करने के बाद, .asoundrcफ़ाइल को सामान्य पर वापस जाने के लिए हटा दें ।


आपके सुझाव के लिए धन्यवाद। .asoundrcमेरे होम डायरेक्टरी में बनाने और टर्मिनल एमुलेटर सत्र को फिर से शुरू करने के बावजूद , ऑडियो अभी भी वक्ताओं को निर्देशित किया जाता है। arecord -f cd -t raw | oggenc - -r -o file.oggआदेश में कुछ भी नहीं रिकॉर्ड करता है। जारी करना arecord -lपहले की तरह ही सूची प्रदान करता है, लेकिन card 1: Loopback(2 devices 0, 1) के लिए दो अतिरिक्त पंक्तियों के साथ, प्रत्येक में 8 उपदेवी ( #0-#7) हैं। इसी तरह, arecord -Lनिम्नलिखित तीन पंक्तियों को जोड़ा sysdefault:CARD=Loopback [newline] Loopback, Loopback PCM [newline] Default Audio Device:। चरित्र सीमा के कारण अगली टिप्पणी में जारी।
user001

का प्रयास कर arecord -f cd -t raw --device=sysdefault | oggenc - -r -o file.oggरिकॉर्ड अवधि आदेश निष्पादित किया जाता है के लिए एक खाली ऑडियो फ़ाइल (यह पहले के रूप में माइक्रोफोन से ऑडियो डेटा आकर्षित नहीं करता है)। दुर्भाग्य से, sysdefaultपतित है क्योंकि इसे दोनों CARD=PCH(पहली पंक्ति arecord -L) और CARD=Loopback(अंतिम पंक्ति ) दोनों के रूप में परिभाषित किया गया है arecord -L। आपके द्वारा दिए गए किसी भी अनुवर्ती सुझाव के लिए धन्यवाद।
user001

लूपबैक केवल उसके प्लेबैक डिवाइस को ही रिकॉर्ड करने की अनुमति देता है, साउंड कार्ड आउटपुट के लिए नहीं।
सीएल।

क्षमा करें मेरा जवाब काम नहीं किया - यह मेरे सेटअप पर काम करता है। मैं आपको asoundrc फ़ाइल के इस स्पष्टीकरण पर एक नज़र डालने की सलाह दूंगा: alsa-project.org/main/index.php/Asoundrc मुझे पूरा यकीन है कि अगर आप कुछ चीजों को आज़माएं और विभिन्न उपकरणों के साथ थोड़ा और खेलें, तो आपको और अधिक करना चाहिए इसे काम करो। थोड़ा सा कीचड़, लेकिन क्या आपके पास एक भौतिक 3.5 मिमी-> 3.5 मिमी केबल है? यदि ऐसा है, तो आप हमेशा अपने हेडफ़ोन आउटपुट जैक को जैक में माइक / लाइन से कनेक्ट कर सकते हैं।
बेवरदब

यदि आप इसे asoundrc के साथ काम नहीं कर सकते हैं, तो ये लिंक इसे जानने में मदद करने के लिए अधिक जानकारी प्रदान कर सकते हैं: sabi.co.uk/Notes/linuxSoundALSA.html#tasksRecordPlay forum.vectorlinux.com/index.php?topic=7500.0 यदि आप अभी भी इसे काम नहीं कर सकते, आप ALSA के बजाय PulseAudio का उपयोग करने के लिए स्विच कर सकते हैं। यह उत्तर बताता है कि यह
पल्सएडियो

6

वर्षों बाद भी संघर्ष जारी है ... रिकॉर्डिंग डिवाइस, लो और बेज़ को कैसे निर्दिष्ट करें:

➜  ~ arecord -l                                                              
**** List of CAPTURE Hardware Devices ****                                   
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]       
  Subdevices: 1/1                                                            
  Subdevice #0: subdevice #0                                                 
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]       
  Subdevices: 1/1                                                            
  Subdevice #0: subdevice #0     

➜  ~ arecord -f S16_LE -r 44100 --device="hw:1,0" plik.wav                   
Recording WAVE 'plik.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono 
^C
Aborted by signal Interrupt...  

तो डिवाइस स्ट्रिंग के लिए प्रारूप है hw:<card>,<device>

डिवाइस आईडी का प्रारूप


6

मुझे भी यही समस्या थी और यहाँ एक और समाधान मिला । मुख्य विचार का उपयोग करना है pacat। मेरे लिए यह इस तरह काम करता है:

1) मॉनिटर डिवाइस ढूंढें:

$ pacmd list | grep "\.monitor"
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
        alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor/#0: Monitor of HDA NVidia Digital Stereo (HDMI)
        alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#2: Monitor of Built-in Audio Analog Stereo

2) फ़ाइल पर ऑडियो कैप्चर करें:

$ pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > dump.raw

3) कन्वर्ट फ़ाइल को wav:

sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 dump.raw output.wav

बस!


3
ध्यान दें कि आप parecइसके बजाय उपयोग कर सकते हैं pacat --record। आप इसके इस्तेमाल soxऔर उपयोग से भी बच सकते हैं parec -d <monitor> --file-format=wav output.wav। आप उपलब्ध फ़ाइल स्वरूपों को सूचीबद्ध कर सकते हैं parec --list-file-formats
Peque

3

आपका हार्डवेयर इसके आउटपुट को कैप्चर करने का समर्थन नहीं करता है; एक बार डेटा वास्तविक प्लेबैक डिवाइस में चला गया है, यह चला गया है।

आपको कुछ सॉफ़्टवेयर का उपयोग करने की आवश्यकता है जो हार्डवेयर में लिखे जाने से पहले ऑडियो डेटा को डुप्लिकेट करता है।

मुझे पल्सएडियो का उपयोग करने का सुझाव देना चाहिए; वहाँ आप बस कैप्चर स्रोत के रूप में इसके आउटपुट में से एक का चयन कर सकते हैं: pavucontrol उत्पादन की निगरानी


मैंने इंस्टॉल pavucontrolकरके रिकॉर्डिंग का उपयोग करने की कोशिश की gnome-sound-recorder। जब मैं खोलता हूं gnome-sound-recorderऔर पुनरावृत्ति ( Ctrl-R) शुरू करता हूं , तो स्ट्रीम PulseAudio वॉल्यूम कंट्रोल विंडो में दिखाई देती है। स्ट्रीम वास्तव में किसी भी डेटा को रिकॉर्ड नहीं करती है, हालांकि (अंतिम लंबाई 0:00 है)। इसके अलावा, क्या आप एक GUI के बजाय कमांड लाइन के माध्यम से रिकॉर्डिंग करने के तरीके से परिचित हैं? धन्यवाद ।
user001

1
  1. PulseAudio वॉल्यूम कंट्रोल -> इनपुट डिवाइस टैब पर जाएं। सबसे नीचे, "सभी इनपुट डिवाइस" दिखाने के लिए चुनें। जांचें कि "मॉनिटर ऑफ इंटरनल ऑडियो एनालॉग स्टीरियो" म्यूट नहीं है और ऑडियो चलते ही वॉल्यूम ऊपर और नीचे जा रहा है !!

  2. ऑडियो स्रोत = आंतरिक ऑडियो एनालॉग स्टीरियो (ऑडियो इनपुट) रिकॉर्ड करने के लिए ऑडियो रिकॉर्डर का उपयोग करें । नीचे स्क्रीनशॉट देखें

यहाँ छवि विवरण दर्ज करें


0

मैंने केवल ऑडियो-रिकॉर्डर स्थापित किया है: https://launchpad.net/audio-recos जो इसके विकल्पों में दिखाता है कि आपको क्या चाहिए ...

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.