Lệnh aplay trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh aplay trong Linux, đây là một phần của các tiện ích ALSA (Advanced Linux Sound Architecture). Lệnh aplay cung cấp một giao diện mức người dùng cho hệ thống âm thanh ALSA, cho phép bạn phát các tệp âm thanh từ dòng lệnh. Bạn sẽ bắt đầu bằng cách cài đặt các gói cần thiết để sử dụng aplay, sau đó khám phá các tùy chọn và cờ khác nhau của nó để phát các tệp âm thanh theo nhiều cách khác nhau.

Lab này bao gồm các bước sau: cài đặt các gói cần thiết cho aplay, sử dụng lệnh aplay để phát các tệp âm thanh và khám phá các tùy chọn và cờ lệnh aplay có sẵn. Lab này được thiết kế để cung cấp cho bạn các ví dụ thực tế và hiểu biết vững chắc về lệnh aplay, đây có thể là một công cụ hữu ích để quản lý phát lại âm thanh trong môi trường Linux của bạn.

Cài đặt các gói cần thiết cho aplay

Trong bước này, chúng ta sẽ cài đặt các gói cần thiết để sử dụng lệnh aplay trong Linux. Lệnh aplay là một phần của các tiện ích ALSA (Advanced Linux Sound Architecture), cung cấp một giao diện mức người dùng cho hệ thống âm thanh ALSA.

Đầu tiên, hãy cập nhật chỉ mục gói:

sudo apt-get update

Ví dụ đầu ra:

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Fetched 324 kB in 1s (324 kB/s)
Reading package lists... Done

Tiếp theo, cài đặt gói alsa-utils, chứa lệnh aplay và các tiện ích ALSA khác:

sudo apt update
sudo apt-get install -y alsa-utils

Ví dụ đầu ra:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  alsa-firmware-loaders alsa-topology-conf alsa-ucm-conf libatopology2 libsnd-dev libsndfile1 libsndfile1-dev
Suggested packages:
  alsa-oss
The following NEW packages will be installed:
  alsa-firmware-loaders alsa-topology-conf alsa-ucm-conf alsa-utils libatopology2 libsnd-dev libsndfile1 libsndfile1-dev
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,265 kB of archives.
After this operation, 5,120 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-firmware-loaders amd64 1.2.4-1 [12.1 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-topology-conf all 1.2.4-1 [11.0 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-ucm-conf all 1.2.4-1 [89.0 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-utils amd64 1.2.6-1ubuntu1 [1,153 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 libatopology2 amd64 1.2.4-1 [13.9 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsnd-dev amd64 1.0.29-1 [18.0 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsndfile1 amd64 1.0.31-2 [111 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsndfile1-dev amd64 1.0.31-2 [57.1 kB]
Fetched 1,265 kB in 1s (1,265 kB/s)
Selecting previously unselected package alsa-firmware-loaders.
(Reading database ... 123412 files and directories currently installed.)
Preparing to unpack .../alsa-firmware-loaders_1.2.4-1_amd64.deb ...
Unpacking alsa-firmware-loaders (1.2.4-1) ...
Selecting previously unselected package alsa-topology-conf.
Preparing to unpack .../alsa-topology-conf_1.2.4-1_all.deb ...
Unpacking alsa-topology-conf (1.2.4-1) ...
Selecting previously unselected package alsa-ucm-conf.
Preparing to unpack .../alsa-ucm-conf_1.2.4-1_all.deb ...
Unpacking alsa-ucm-conf (1.2.4-1) ...
Selecting previously unselected package alsa-utils.
Preparing to unpack .../alsa-utils_1.2.6-1ubuntu1_amd64.deb ...
Unpacking alsa-utils (1.2.6-1ubuntu1) ...
Selecting previously unselected package libatopology2:amd64.
Preparing to unpack .../libatopology2_1.2.4-1_amd64.deb ...
Unpacking libatopology2:amd64 (1.2.4-1) ...
Selecting previously unselected package libsnd-dev:amd64.
Preparing to unpack .../libsnd-dev_1.0.29-1_amd64.deb ...
Unpacking libsnd-dev:amd64 (1.0.29-1) ...
Selecting previously unselected package libsndfile1:amd64.
Preparing to unpack .../libsndfile1_1.0.31-2_amd64.deb ...
Unpacking libsndfile1:amd64 (1.0.31-2) ...
Selecting previously unselected package libsndfile1-dev:amd64.
Preparing to unpack .../libsndfile1-dev_1.0.31-2_amd64.deb ...
Unpacking libsndfile1-dev:amd64 (1.0.31-2) ...
Setting up alsa-firmware-loaders (1.2.4-1) ...
Setting up alsa-topology-conf (1.2.4-1) ...
Setting up alsa-ucm-conf (1.2.4-1) ...
Setting up libatopology2:amd64 (1.2.4-1) ...
Setting up libsnd-dev:amd64 (1.0.29-1) ...
Setting up libsndfile1:amd64 (1.0.31-2) ...
Setting up libsndfile1-dev:amd64 (1.0.31-2) ...
Setting up alsa-utils (1.2.6-1ubuntu1) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3) ...

Bây giờ các gói cần thiết cho lệnh aplay đã được cài đặt, và chúng ta có thể tiến hành bước tiếp theo.

Phát tệp âm thanh bằng lệnh aplay

Trong bước này, chúng ta sẽ học cách sử dụng lệnh aplay để phát các tệp âm thanh trong Linux.

Đầu tiên, hãy tải xuống một tệp âm thanh mẫu để sử dụng trong các ví dụ của chúng ta:

wget https://www.soundjay.com/button/sounds/beep-07.wav -O ~/project/beep.wav

Ví dụ đầu ra:

--2023-04-12 08:31:33--  https://www.soundjay.com/button/sounds/beep-07.wav
Resolving www.soundjay.com (www.soundjay.com)... 104.24.108.5, 104.24.109.5
Connecting to www.soundjay.com (www.soundjay.com)|104.24.108.5|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11174 (11K) [audio/x-wav]
Saving to: '~/project/beep.wav'

~/project/beep.wav     100%[===================>]  10.92K  --.-KB/s    in 0s

2023-04-12 08:31:33 (128 MB/s) - '~/project/beep.wav' saved [11174/11174]

Bây giờ, hãy phát tệp âm thanh bằng lệnh aplay:

aplay ~/project/beep.wav

Ví dụ đầu ra:

Playing WAVE '/home/labex/project/beep.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Bạn sẽ nghe thấy tệp âm thanh phát qua loa hoặc tai nghe của hệ thống.

Để dừng phát lại, hãy nhấn Ctrl+C.

Lệnh aplay hỗ trợ nhiều tùy chọn để điều khiển phát lại âm thanh, chẳng hạn như đặt âm lượng, lặp lại âm thanh, v.v. Chúng ta sẽ khám phá các tùy chọn này trong bước tiếp theo.

Khám phá các tùy chọn và cờ của lệnh aplay

Trong bước cuối cùng này, chúng ta sẽ khám phá một số tùy chọn và cờ có sẵn cho lệnh aplay.

Hãy bắt đầu bằng cách hiển thị menu trợ giúp cho lệnh aplay:

aplay --help

Ví dụ đầu ra:

Usage: aplay [OPTION]... [FILE]...
Plays a PCM sound file.

Options:
  -h, --help             help
  -D, --device=NAME      set the device name
  -c, --channels=NUM     set the number of channels
  -f, --format=FORMAT    set the sample format
  -r, --rate=RATE        set the sample rate
  -t, --type=TYPE        set the file type
  -v, --version          show version
  -V, --verbose          show PCM hardware parameters
  -q, --quiet            quiet mode
  -l, --list-devices     list all soundcards and digital audio devices
  -L, --list-pcm         list all PCM devices
  -Xalsa-opts            pass options for ALSA backend

Một số tùy chọn hữu ích bạn có thể thử:

  • Phát tệp âm thanh trong một vòng lặp:

    aplay -c 2 -r 44100 -f S16_LE ~/project/beep.wav -l 3

    Điều này sẽ phát tệp beep.wav ở chế độ stereo (2 kênh), với tốc độ lấy mẫu 44,1 kHz, với định dạng little-endian 16 bit và lặp lại nó 3 lần.

  • Điều chỉnh âm lượng:

    aplay -c 2 -r 44100 -f S16_LE ~/project/beep.wav --volume 50

    Điều này sẽ phát tệp beep.wav ở mức âm lượng 50%.

  • Liệt kê các thiết bị âm thanh có sẵn:

    aplay -l

    Điều này sẽ hiển thị danh sách tất cả các thiết bị âm thanh có sẵn trên hệ thống của bạn.

Hãy thoải mái thử nghiệm với các tùy chọn và cờ khác nhau để tùy chỉnh phát lại âm thanh theo nhu cầu của bạn.

Tóm tắt

Trong lab này, chúng ta đã học cách cài đặt các gói cần thiết để sử dụng lệnh aplay trong Linux, đây là một phần của các tiện ích ALSA (Advanced Linux Sound Architecture). Chúng ta đã cập nhật chỉ mục gói và cài đặt gói alsa-utils, chứa lệnh aplay và các tiện ích ALSA khác. Sau đó, chúng ta đã khám phá các tùy chọn và cờ lệnh aplay, cho phép chúng ta phát các tệp âm thanh và tùy chỉnh cài đặt phát lại.

Lab này bao gồm việc sử dụng thực tế lệnh aplay, bao gồm phát các tệp âm thanh và hiểu các tùy chọn và cờ có sẵn. Kiến thức này có thể được áp dụng cho các tác vụ liên quan đến âm thanh khác nhau trong môi trường Linux.

400+ câu lệnh phổ biến trong Linux