linux arecord: thu đầu ra card âm thanh thay vì đầu vào micro


20

Tôi đang cố gắng bắt đầu ra card âm thanh và mã hóa nó ở định dạng Vorbis ogg bằng lệnh sau:

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

Tuy nhiên, đầu vào micrô của máy tính được ghi thay vì đầu ra card âm thanh.

Đầu ra của lệnh 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

Đầu ra của lệnh arecord -Lđược chứa trong mục pastebin này .

Các arecordtrang người đàn ông chỉ ra rằng thiết bị đầu vào có thể được chọn bằng cách sử dụng -Dlá cờ, nhưng không đưa ra ví dụ về cú pháp.

Tôi muốn biết cách thay đổi đầu vào arecordtừ micro sang card âm thanh. Tôi không quan tâm đến các lựa chọn thay thế dựa trên GUI như Audacity. Cảm ơn.

Chỉnh sửa: Tôi đang chạy Debian 7.0 (ổn định) với arecordphiên bản 1.0.25, vorbis-toolsphiên bản 1.4.0 và trình điều khiển ALSA phiên bản 1.0.24.


Phần cứng của bạn có một số điều khiển bộ trộn để định tuyến đầu ra trở lại thiết bị chụp không?
CL.

@CL. Máy trộn được cài đặt sẵn duy nhất mà tôi biết là alsamixer. Nếu tôi chọn thẻ loopback trong alsamixer(phím F6 để chọn card âm thanh), tôi sẽ nhận được tin nhắn This sound device does not have any controls. Nếu tôi thoát khỏi bộ trộn và quay trở lại, tôi thấy rằng card âm thanh được khôi phục từ loopback sang thẻ mặc định. Cố gắng tạm dừng ( ctrl-z) và nền ( bg) alsamixerquá trình sau khi chọn loopbackkhông cho phép ghi âm thành công thông qua arecordlệnh.
dùng001

Việc lựa chọn thẻ trong alsamixerkhông ảnh hưởng đến phần còn lại của hệ thống; nó chỉ thay đổi những điều khiển được hiển thị. Các điều khiển lựa chọn ghi âm của thiết bị Conexant là gì?
CL.

@CL. Đối với thiết bị Conexant của tôi, tôi có một điều khiển phát lại ( Master) và một điều khiển chụp ( Capture) bên trong alsamixer. Việc chụp có thể được bật và tắt bằng phím cách bên trong alsamixervà nó được bật theo mặc định. Xin vui lòng cho tôi biết nếu đây không phải là những gì bạn dự định. Cảm ơn.
dùng001

Câu trả lời:


6

Tôi khuyên bạn nên sử dụng trình điều khiển loopback ALSA. Để tải nó:

sudo modprobe snd-aloop

Điều này sẽ thêm một thiết bị chụp mới vào đầu ra từ arecord -L.

Nếu bạn chỉ có một soundcard vật lý trong máy tính, bạn có thể đặt soundcard loopback thành mặc định cho tất cả các ứng dụng bằng cách tạo một tệp .asoundrctrong thư mục nhà của bạn với nội dung sau:

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

Trong khi tập tin này được đặt đúng chỗ, mọi âm thanh phát ra từ tất cả các ứng dụng sẽ chuyển đến bộ điều hợp loopback thay vì loa thực tế của bạn. Chỉ cần chỉ định đúng thiết bị trong lệnh arecord của bạn và sau khi hoàn tất, hãy xóa .asoundrctệp để trở lại bình thường.


Cảm ơn lời đề nghị của bạn. Mặc dù tạo .asoundrctrong thư mục nhà của tôi và khởi động lại phiên giả lập thiết bị đầu cuối, âm thanh vẫn được hướng đến loa. Các arecord -f cd -t raw | oggenc - -r -o file.ogglệnh ghi gì cả. Phát hành arecord -lcung cấp cùng một danh sách như trước đây, nhưng với hai dòng bổ sung cho card 1: Loopback( devices 0, 1), mỗi dòng có 8 mục con ( #0-#7). Tương tự, arecord -Lthêm ba dòng sau : sysdefault:CARD=Loopback [newline] Loopback, Loopback PCM [newline] Default Audio Device. Tiếp tục trong bình luận tiếp theo do giới hạn ký tự.
dùng001

Attemping arecord -f cd -t raw --device=sysdefault | oggenc - -r -o file.oggghi lại một tệp âm thanh trống trong thời gian lệnh được thực thi (nó không rút dữ liệu âm thanh từ micrô như trước). Thật không may, sysdefaultlà suy biến vì nó được định nghĩa là cả CARD=PCH(dòng đầu tiên arecord -L) và CARD=Loopback(dòng cuối cùng arecord -L). Cảm ơn cho bất kỳ đề xuất theo dõi bạn có thể cung cấp.
dùng001

Loopback cho phép chỉ ghi lại những gì được phát vào thiết bị phát lại của nó , không cho đầu ra card âm thanh.
CL.

Xin lỗi, câu trả lời của tôi không hoạt động - nó hoạt động trên thiết lập của tôi. Tôi khuyên bạn nên xem phần giải thích về tệp asoundrc này: alsa-project.org/main/index.php/Asoundrc Tôi khá chắc chắn nếu bạn thử một vài thứ và chơi xung quanh với các thiết bị khác một chút nữa bạn nên làm cho nó hoạt động Một chút bùn, nhưng bạn có cáp 3,5mm-> 3,5mm không? Nếu vậy, bạn luôn có thể kết nối giắc cắm đầu ra tai nghe của mình với giắc cắm mic / line.
beveradb

Nếu bạn không thể làm cho nó hoạt động với asoundrc, các liên kết này có thể cung cấp thêm thông tin để giúp tìm ra nó: sabi.co.uk/Notes/linuxSoundALSA.html#t taskRecordPlay forum.vectorlinux.com/index.php?topic=7500.0 Nếu bạn vẫn không thể làm cho nó hoạt động, bạn có thể chuyển sang sử dụng PulseAudio thay vì ALSA. Câu trả lời này giải thích cách thực hiện điều này bằng PulseAudio: askubfox.com/questions/171287/ triệt
beveradb

6

nhiều năm sau cuộc đấu tranh vẫn tiếp tục ... làm thế nào để chỉ định thiết bị ghi âm, lo và kìa:

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

Vì vậy, định dạng cho chuỗi thiết bị là hw:<card>,<device>

định dạng của id thiết bị


6

Tôi đã có cùng một vấn đề và tìm thấy một giải pháp khác ở đây . Ý tưởng chính là sử dụng pacat. Đối với tôi nó hoạt động như thế này:

1) tìm thiết bị màn hình:

$ 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) Ghi âm thanh vào tập tin:

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

3) Chuyển đổi tập tin thành wav:

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

Đó là nó!


3
Lưu ý rằng bạn có thể sử dụng parecthay vì pacat --record. Bạn cũng có thể tránh việc sử dụng soxvà sử dụng parec -d <monitor> --file-format=wav output.wav. Bạn có thể liệt kê các định dạng tập tin có sẵn với parec --list-file-formats.
Peque

3

Phần cứng của bạn không hỗ trợ chụp đầu ra của nó; một khi dữ liệu đã đi vào thiết bị phát lại thực tế, nó sẽ biến mất.

Bạn cần sử dụng một số phần mềm sao chép dữ liệu âm thanh trước khi ghi vào phần cứng.

Tôi khuyên bạn nên sử dụng PulseAudio; ở đó bạn chỉ cần chọn một trong các đầu ra của nó làm nguồn chụp: giám sát đầu ra pavucontrol


Tôi đã cài đặt pavucontrolvà thử ghi âm bằng cách sử dụng gnome-sound-recorder. Khi tôi mở gnome-sound-recordervà bắt đầu mã hóa lại ( Ctrl-R), luồng sẽ xuất hiện trong cửa sổ PulseAudio Volume Control. Tuy nhiên, luồng không thực sự ghi lại bất kỳ dữ liệu nào (độ dài cuối cùng là 0:00). Ngoài ra, bạn có quen với cách thực hiện ghi thông qua dòng lệnh thay vì GUI không? Cảm ơn .
user001

1
  1. Chuyển đến Điều khiển âm lượng PulseAudio -> Tab Thiết bị đầu vào. Ở phía dưới, chọn hiển thị "TẤT CẢ các thiết bị đầu vào". Kiểm tra xem "Màn hình âm thanh nổi tương tự âm thanh" không bị tắt tiếng và âm lượng tăng giảm khi bạn phát âm thanh !!

  2. Sử dụng Trình ghi âm thanh để ghi Nguồn âm thanh = Âm thanh nổi tương tự nội bộ (Đầu vào âm thanh). Xem ảnh chụp màn hình bên dưới.

nhập mô tả hình ảnh ở đây


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.