linux arecord: menangkap output kartu suara daripada input mikrofon


20

Saya mencoba menangkap keluaran kartu suara dan menyandikannya dalam format Oorb Vorbis menggunakan perintah berikut:

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

Namun, input mikrofon komputer dicatat daripada output kartu suara.

Output dari perintah arecord -lini adalah

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

Output dari perintah arecord -Lterkandung dalam entri pastebin ini .

The arecordhalaman manual menunjukkan bahwa perangkat input dapat dipilih dengan menggunakan -Dbendera, tetapi tidak memberikan contoh sintaksis.

Saya ingin tahu cara mengubah input arecorddari mikrofon ke kartu suara. Saya tidak tertarik dengan alternatif berbasis GUI seperti Audacity. Terima kasih.

Sunting: Saya menjalankan Debian 7.0 (stabil) dengan arecordversi 1.0.25, vorbis-toolsversi 1.4.0, dan driver ALSA versi 1.0.24.


Apakah perangkat keras Anda memiliki kontrol mixer untuk merutekan output kembali ke perangkat tangkap?
CL.

@CL. Satu-satunya mixer pra-instal yang saya ketahui adalah alsamixer. Jika saya memilih kartu loopback di dalam alsamixer(tombol F6 untuk memilih kartu suara), saya menerima pesan This sound device does not have any controls. Jika saya keluar dari mixer dan kembali, saya menemukan bahwa kartu suara dikembalikan dari loopback ke kartu default. Mencoba untuk menangguhkan ( ctrl-z) dan latar belakang ( bg) alsamixerproses setelah memilih loopbacktidak memungkinkan perekaman audio yang berhasil melalui arecordperintah.
user001

Pemilihan kartu dalam alsamixertidak memengaruhi sisa sistem; itu hanya mengubah kontrol yang ditampilkan. Apa kontrol pemilihan rekaman dari perangkat Conexant?
CL.

@CL. Untuk perangkat Conexant saya, saya memiliki satu kontrol pemutaran ( Master) dan satu kontrol tangkap ( Capture) di dalamnya alsamixer. Pengambilan dapat dinyalakan dan dimatikan dengan spasi di dalam alsamixerdan diaktifkan secara default. Tolong beri tahu saya jika ini bukan yang Anda maksudkan. Terima kasih.
user001

Jawaban:


6

Saya sarankan menggunakan driver loopback ALSA. Untuk memuatnya:

sudo modprobe snd-aloop

Ini harus menambahkan perangkat penangkapan baru ke output dari arecord -L.

Jika Anda hanya memiliki satu kartu suara fisik di komputer Anda, Anda dapat menjadikan kartu suara loopback sebagai default untuk semua aplikasi dengan membuat file .asoundrcdi folder rumah Anda dengan konten berikut:

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

Saat file ini ada, output suara apa pun dari semua aplikasi harus masuk ke adaptor loopback daripada speaker Anda yang sebenarnya. Cukup tentukan perangkat yang benar dalam perintah arecord Anda dan setelah Anda selesai, hapus .asoundrcfile untuk kembali normal.


Terima kasih atas saran Anda. Meskipun membuat .asoundrcdi direktori rumah saya dan memulai kembali sesi terminal emulator, audio masih diarahkan ke speaker. The arecord -f cd -t raw | oggenc - -r -o file.oggperintah mencatat apa-apa. Penerbitan arecord -lmenyediakan daftar yang sama seperti sebelumnya, tetapi dengan dua baris tambahan untuk card 1: Loopback( devices 0, 1), masing-masing dengan 8 subdevice ( #0-#7). Demikian juga, arecord -Lmenambahkan tiga baris berikut: sysdefault:CARD=Loopback [newline] Loopback, Loopback PCM [newline] Default Audio Device. Berlanjut di komentar berikutnya karena batas karakter.
user001

Mencoba arecord -f cd -t raw --device=sysdefault | oggenc - -r -o file.oggmerekam file audio kosong selama durasi perintah dieksekusi (tidak menarik data audio dari mikrofon seperti sebelumnya). Sayangnya, sysdefaultmengalami degenerasi karena didefinisikan sebagai CARD=PCH(baris pertama arecord -L) dan CARD=Loopback(baris terakhir arecord -L). Terima kasih atas saran tindak lanjut yang dapat Anda berikan.
user001

Loopback memungkinkan untuk merekam hanya apa yang dimainkan untuk nya perangkat pemutaran, tidak output kartu suara.
CL.

Maaf jawaban saya tidak berfungsi - ini berfungsi pada pengaturan saya. Saya akan merekomendasikan untuk melihat penjelasan tentang file asoundrc ini: alsa-project.org/main/index.php/Asoundrc Saya cukup yakin jika Anda mencoba beberapa hal dan bermain-main dengan perangkat yang berbeda sedikit lebih banyak Anda harus buat itu bekerja Sedikit kotor, tetapi apakah Anda memiliki kabel fisik 3,5mm-> 3,5mm? Jika demikian, Anda selalu bisa menghubungkan jack output headphone Anda ke jack mic / line in.
beveradb

Jika Anda tidak bisa menggunakannya dengan asoundrc, tautan ini dapat memberikan lebih banyak info untuk membantu mengetahuinya: sabi.co.uk/Notes/linuxSoundALSA.html#tasksRecordPlay forum.vectorlinux.com/index.php?topic=7500.0 Jika Anda masih tidak bisa membuatnya berfungsi, Anda bisa beralih menggunakan PulseAudio alih-alih ALSA. Jawaban ini menjelaskan cara melakukan ini menggunakan PulseAudio: askubuntu.com/questions/171287/…
beveradb

6

bertahun-tahun kemudian perjuangan berlanjut ... bagaimana menentukan alat perekam, lihat dan lihat:

➜  ~ 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...  

Jadi format untuk string perangkat adalah hw:<card>,<device>

format id perangkat


6

Saya memiliki masalah yang sama dan menemukan solusi lain di sini . Gagasan utamanya adalah menggunakan pacat. Bagi saya ini berfungsi seperti ini:

1) menemukan perangkat monitor:

$ 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) Ambil audio ke file:

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

3) Konversi file ke wav:

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

Itu dia!


3
Perhatikan bahwa Anda dapat menggunakannya parecsebagai gantinya pacat --record. Anda juga dapat menghindari penggunaan soxdan penggunaan parec -d <monitor> --file-format=wav output.wav. Anda dapat mendaftar format file yang tersedia dengan parec --list-file-formats.
Peque

3

Perangkat keras Anda tidak mendukung pengambilan outputnya; setelah data masuk ke perangkat pemutaran yang sebenarnya, itu hilang.

Anda perlu menggunakan beberapa perangkat lunak yang menggandakan data audio sebelum ditulis ke perangkat keras.

Saya sarankan menggunakan PulseAudio; di sana Anda cukup memilih salah satu outputnya sebagai sumber penangkapan: pemantauan keluaran pavucontrol


Saya menginstal pavucontroldan mencoba merekam menggunakan gnome-sound-recorder. Ketika saya membuka gnome-sound-recorderdan mulai pengodean ulang ( Ctrl-R), aliran muncul di jendela PulseAudio Volume Control. Namun, stream sebenarnya tidak merekam data apa pun (panjang akhirnya adalah 0:00). Juga, apakah Anda terbiasa dengan cara melakukan perekaman melalui baris perintah dan bukan GUI? Terima kasih.
user001

1
  1. Pergi ke Kontrol Volume PulseAudio -> Tab Perangkat Input. Di bagian bawah, pilih untuk menampilkan "SEMUA perangkat input". Periksa apakah "Monitor Audio Internal Stereo Analog" tidak dimatikan dan volume naik dan turun saat Anda memutar audio !!

  2. Gunakan Perekam Audio untuk merekam Sumber Audio = Audio Internal Stereo Stereo (Input Audio). Lihat tangkapan layar di bawah ini.

masukkan deskripsi gambar di sini


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.