Tần suất phát Python

Nếu bạn muốn sử dụng Python để phát hoặc ghi lại âm thanh, thì bạn đã đến đúng nơi. Trong hướng dẫn này, bạn sẽ học cách phát và ghi âm thanh trong Python bằng một số thư viện âm thanh phổ biến nhất. Trước tiên, bạn sẽ tìm hiểu về các phương pháp đơn giản nhất để phát và ghi âm thanh, sau đó bạn sẽ tìm hiểu về một số thư viện cung cấp thêm một số chức năng để đổi lấy một vài dòng mã bổ sung

Đến cuối hướng dẫn này, bạn sẽ biết cách

  • Phát các tệp MP3 và WAV, cũng như một loạt các định dạng âm thanh khác
  • Phát các mảng NumPy và Python có chứa âm thanh
  • Ghi lại âm thanh bằng Python
  • Lưu các bản ghi hoặc tệp âm thanh của bạn ở nhiều định dạng tệp khác nhau

Để biết danh sách đầy đủ các thư viện Python liên quan đến âm thanh, hãy xem trang wiki về âm thanh trong Python

Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn

Phát tệp âm thanh

Dưới đây, bạn sẽ thấy cách phát tệp âm thanh với tuyển tập thư viện Python. Một số thư viện trong số này cho phép bạn phát nhiều định dạng âm thanh, bao gồm các mảng MP3 và NumPy. Tất cả các thư viện bên dưới đều cho phép bạn phát các tệp WAV, một số thư viện có nhiều dòng mã hơn các thư viện khác

  • import simpleaudio as sa
    
    filename = 'myfile.wav'
    wave_obj = sa.WaveObject.from_wave_file[filename]
    play_obj = wave_obj.play[]
    play_obj.wait_done[]  # Wait until sound has finished playing
    
    7 là gói đơn giản nhất để sử dụng nếu bạn chỉ muốn phát tệp WAV hoặc MP3. Nó không cung cấp chức năng nào khác ngoài phát lại đơn giản

  • import simpleaudio as sa
    
    filename = 'myfile.wav'
    wave_obj = sa.WaveObject.from_wave_file[filename]
    play_obj = wave_obj.play[]
    play_obj.wait_done[]  # Wait until sound has finished playing
    
    8 cho phép bạn phát các tệp WAV và mảng NumPy, đồng thời cung cấp cho bạn các tùy chọn để kiểm tra xem tệp có còn đang phát hay không

  • import simpleaudio as sa
    
    filename = 'myfile.wav'
    wave_obj = sa.WaveObject.from_wave_file[filename]
    play_obj = wave_obj.play[]
    play_obj.wait_done[]  # Wait until sound has finished playing
    
    9 cho phép bạn phát các tệp WAV hoặc phát tiếng bíp từ loa, nhưng nó chỉ hoạt động trên Windows

  • import numpy as np
    import simpleaudio as sa
    
    frequency = 440  # Our played note will be 440 Hz
    fs = 44100  # 44100 samples per second
    seconds = 3  # Note duration of 3 seconds
    
    # Generate array with seconds*sample_rate steps, ranging between 0 and seconds
    t = np.linspace[0, seconds, seconds * fs, False]
    
    # Generate a 440 Hz sine wave
    note = np.sin[frequency * t * 2 * np.pi]
    
    # Ensure that highest value is in 16-bit range
    audio = note * [2**15 - 1] / np.max[np.abs[note]]
    # Convert to 16-bit data
    audio = audio.astype[np.int16]
    
    # Start playback
    play_obj = sa.play_buffer[audio, 1, 2, fs]
    
    # Wait for playback to finish before exiting
    play_obj.wait_done[]
    
    0 và
    import numpy as np
    import simpleaudio as sa
    
    frequency = 440  # Our played note will be 440 Hz
    fs = 44100  # 44100 samples per second
    seconds = 3  # Note duration of 3 seconds
    
    # Generate array with seconds*sample_rate steps, ranging between 0 and seconds
    t = np.linspace[0, seconds, seconds * fs, False]
    
    # Generate a 440 Hz sine wave
    note = np.sin[frequency * t * 2 * np.pi]
    
    # Ensure that highest value is in 16-bit range
    audio = note * [2**15 - 1] / np.max[np.abs[note]]
    # Convert to 16-bit data
    audio = audio.astype[np.int16]
    
    # Start playback
    play_obj = sa.play_buffer[audio, 1, 2, fs]
    
    # Wait for playback to finish before exiting
    play_obj.wait_done[]
    
    1 cung cấp các ràng buộc cho thư viện PortAudio để phát lại các tệp WAV trên nhiều nền tảng

  • import numpy as np
    import simpleaudio as sa
    
    frequency = 440  # Our played note will be 440 Hz
    fs = 44100  # 44100 samples per second
    seconds = 3  # Note duration of 3 seconds
    
    # Generate array with seconds*sample_rate steps, ranging between 0 and seconds
    t = np.linspace[0, seconds, seconds * fs, False]
    
    # Generate a 440 Hz sine wave
    note = np.sin[frequency * t * 2 * np.pi]
    
    # Ensure that highest value is in 16-bit range
    audio = note * [2**15 - 1] / np.max[np.abs[note]]
    # Convert to 16-bit data
    audio = audio.astype[np.int16]
    
    # Start playback
    play_obj = sa.play_buffer[audio, 1, 2, fs]
    
    # Wait for playback to finish before exiting
    play_obj.wait_done[]
    
    2 yêu cầu
    import numpy as np
    import simpleaudio as sa
    
    frequency = 440  # Our played note will be 440 Hz
    fs = 44100  # 44100 samples per second
    seconds = 3  # Note duration of 3 seconds
    
    # Generate array with seconds*sample_rate steps, ranging between 0 and seconds
    t = np.linspace[0, seconds, seconds * fs, False]
    
    # Generate a 440 Hz sine wave
    note = np.sin[frequency * t * 2 * np.pi]
    
    # Ensure that highest value is in 16-bit range
    audio = note * [2**15 - 1] / np.max[np.abs[note]]
    # Convert to 16-bit data
    audio = audio.astype[np.int16]
    
    # Start playback
    play_obj = sa.play_buffer[audio, 1, 2, fs]
    
    # Wait for playback to finish before exiting
    play_obj.wait_done[]
    
    1 để phát lại âm thanh, nhưng khi cài đặt
    import numpy as np
    import simpleaudio as sa
    
    frequency = 440  # Our played note will be 440 Hz
    fs = 44100  # 44100 samples per second
    seconds = 3  # Note duration of 3 seconds
    
    # Generate array with seconds*sample_rate steps, ranging between 0 and seconds
    t = np.linspace[0, seconds, seconds * fs, False]
    
    # Generate a 440 Hz sine wave
    note = np.sin[frequency * t * 2 * np.pi]
    
    # Ensure that highest value is in 16-bit range
    audio = note * [2**15 - 1] / np.max[np.abs[note]]
    # Convert to 16-bit data
    audio = audio.astype[np.int16]
    
    # Start playback
    play_obj = sa.play_buffer[audio, 1, 2, fs]
    
    # Wait for playback to finish before exiting
    play_obj.wait_done[]
    
    4, nó cho phép bạn phát nhiều định dạng âm thanh chỉ với một vài dòng mã

Chúng ta hãy xem từng thư viện này để phát lại âm thanh

Loại bỏ các quảng cáo

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
7

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
7 là một “mô-đun chức năng đơn thuần Python, đa nền tảng, không phụ thuộc để phát âm thanh. ” Với mô-đun này, bạn có thể phát tệp âm thanh bằng một dòng mã

from playsound import playsound

playsound['myfile.wav']

Tài liệu của

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
7 nói rằng nó đã được thử nghiệm trên các tệp WAV và MP3, nhưng nó cũng có thể hoạt động với các định dạng tệp khác

Thư viện này được cập nhật lần cuối vào tháng 6 năm 2017. Nó dường như hoạt động tốt tại thời điểm viết bài này, nhưng không rõ liệu nó có còn hỗ trợ các bản phát hành Python mới hơn hay không

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8 là một thư viện đa nền tảng để phát lại các tệp WAV [đơn âm và âm thanh nổi] mà không phụ thuộc. Đoạn mã sau có thể được sử dụng để phát tệp WAV và đợi tệp phát xong trước khi kết thúc tập lệnh

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing

Các tệp WAV chứa một chuỗi bit biểu thị dữ liệu âm thanh thô, cũng như các tiêu đề có siêu dữ liệu ở định dạng RIFF [Định dạng tệp trao đổi tài nguyên]

Đối với các bản ghi CD, tiêu chuẩn ngành là lưu trữ từng mẫu âm thanh [một điểm dữ liệu âm thanh riêng lẻ liên quan đến áp suất không khí] dưới dạng giá trị 16 bit, với tốc độ 44100 mẫu mỗi giây

Để giảm kích thước tệp, có thể đủ để lưu trữ một số bản ghi [ví dụ: giọng nói của con người] ở tốc độ lấy mẫu thấp hơn, chẳng hạn như 8000 mẫu mỗi giây, mặc dù điều này có nghĩa là tần số âm thanh cao hơn có thể không được thể hiện chính xác

Một số thư viện được thảo luận trong hướng dẫn này phát và ghi lại các đối tượng

import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0, trong khi những thư viện khác sử dụng mảng NumPy để lưu trữ dữ liệu âm thanh thô

Cả hai đều tương ứng với một chuỗi các điểm dữ liệu có thể được phát lại ở tốc độ mẫu được chỉ định để phát âm thanh. Đối với một đối tượng

import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0, mỗi mẫu được lưu trữ dưới dạng một bộ gồm hai giá trị 8 bit, trong khi trong một mảng NumPy, mỗi phần tử có thể chứa một giá trị 16 bit tương ứng với một mẫu

Một sự khác biệt quan trọng giữa hai loại dữ liệu này là các đối tượng

import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0 là bất biến, trong khi mảng NumPy có thể thay đổi, làm cho mảng sau phù hợp hơn để tạo âm thanh và xử lý tín hiệu phức tạp hơn. Để biết thêm thông tin về cách làm việc với NumPy, hãy xem các hướng dẫn về NumPy của chúng tôi

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8 cho phép bạn chơi các mảng NumPy và Python và các đối tượng
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0 bằng cách sử dụng
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
5. Đảm bảo rằng bạn đã cài đặt NumPy để ví dụ sau hoạt động, cũng như
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8. [Khi đã cài đặt
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
7, bạn có thể thực hiện việc này bằng cách chạy
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
8 từ bảng điều khiển của mình. ]

Để biết thêm thông tin về cách sử dụng

import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
7 để cài đặt các gói, hãy xem Pipenv. Hướng dẫn về Công cụ đóng gói Python mới

Dưới đây, bạn sẽ thấy cách tạo mảng NumPy tương ứng với âm 440 Hz và phát lại bằng cách sử dụng

import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
5

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]

Tiếp theo, hãy xem cách bạn có thể sử dụng

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
9 để phát tệp WAV trên máy Windows

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
9

Nếu bạn sử dụng Windows, bạn có thể sử dụng mô-đun

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
9 tích hợp để truy cập bộ máy phát âm thanh cơ bản của nó. Phát tệp WAV có thể được thực hiện trong một vài dòng mã

import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
9 không hỗ trợ phát lại bất kỳ tệp nào ngoài tệp WAV. Nó cho phép bạn phát ra tiếng bíp cho loa của mình bằng cách sử dụng
import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms
5. Ví dụ: bạn có thể phát ra âm báo 1000 Hz trong 100 mili giây bằng đoạn mã sau

import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms

Tiếp theo, bạn sẽ tìm hiểu cách sử dụng mô-đun

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0 để phát lại âm thanh đa nền tảng

Loại bỏ các quảng cáo

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0

Như đã nêu trong tài liệu của nó,

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0 “cung cấp các liên kết cho thư viện PortAudio và một số chức năng tiện lợi để phát và ghi các mảng NumPy có chứa tín hiệu âm thanh”. Để phát các tệp WAV, cần cài đặt
import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms
9 và
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0 để mở các tệp WAV dưới dạng mảng NumPy

Với

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0,
import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms
9 và
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0 được cài đặt, giờ đây bạn có thể đọc tệp WAV dưới dạng mảng NumPy và phát lại tệp đó

import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing

Dòng chứa

import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
4 trích xuất dữ liệu âm thanh thô, cũng như tốc độ lấy mẫu của tệp như được lưu trong tiêu đề RIFF của nó và
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
5 đảm bảo rằng tập lệnh chỉ kết thúc sau khi âm thanh phát xong

Tiếp theo, chúng ta sẽ học cách sử dụng

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2 để phát âm thanh. Với các phần phụ thuộc phù hợp được cài đặt, nó cho phép bạn phát nhiều loại tệp âm thanh và cung cấp cho bạn nhiều tùy chọn hơn để làm việc với âm thanh so với
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
7.

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2

Mặc dù

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2 có thể mở và lưu các tệp WAV mà không có bất kỳ phụ thuộc nào, nhưng bạn cần cài đặt gói phát lại âm thanh để phát âm thanh.
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8 được khuyến nghị mạnh mẽ, nhưng
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1,
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav['myfile.wav']
play[sound]
2 và
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav['myfile.wav']
play[sound]
3 là các lựa chọn thay thế

Đoạn mã sau có thể được sử dụng để phát tệp WAV với

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2

from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav['myfile.wav']
play[sound]

Để phát lại các loại âm thanh khác, chẳng hạn như tệp MP3, nên cài đặt

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
4 hoặc
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav['myfile.wav']
play[sound]
6. Hãy xem
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2 để được hướng dẫn. Thay thế cho các bước được mô tả trong tài liệu,
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav['myfile.wav']
play[sound]
8 cung cấp các ràng buộc cho
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
4 và có thể được cài đặt bằng cách sử dụng pip

$ pip install ffmpeg-python

Khi cài đặt

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
4, việc phát lại tệp MP3 chỉ yêu cầu một thay đổi nhỏ trong mã trước đây của chúng tôi

from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3['myfile.mp3']
play[sound]

Sử dụng cấu trúc

$ pip install ffmpeg-python
1, bạn có thể chơi bất kỳ loại. Ví dụ: bạn có thể phát tệp WMA bằng cách sử dụng cách sau

sound = AudioSegment.from_file['myfile.wma', 'wma']

Ngoài việc phát lại các tệp âm thanh,

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2 cho phép bạn lưu âm thanh ở các định dạng tệp khác nhau [sẽ nói thêm về điều này sau], cắt âm thanh, tính toán độ dài của tệp âm thanh, tăng dần hoặc giảm dần và áp dụng giảm dần chéo

$ pip install ffmpeg-python
4 tạo một bản sao của Đoạn âm thanh phát ngược lại, mà tài liệu mô tả là “hữu ích cho Pink Floyd, xoay quanh và một số thuật toán xử lý âm thanh. ”

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 cung cấp các ràng buộc cho PortAudio, thư viện I/O âm thanh đa nền tảng. Điều này có nghĩa là bạn có thể sử dụng
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 để phát và ghi âm thanh trên nhiều nền tảng khác nhau, bao gồm Windows, Linux và Mac. Với
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1, việc phát âm thanh được thực hiện bằng cách ghi vào
$ pip install ffmpeg-python
9

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
0

Như bạn có thể nhận thấy, phát âm thanh với

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 phức tạp hơn một chút so với phát âm thanh với các thư viện mà bạn đã thấy trước đó. Điều này có nghĩa là nó có thể không phải là lựa chọn đầu tiên của bạn nếu bạn chỉ muốn phát hiệu ứng âm thanh trong ứng dụng Python của mình

Tuy nhiên, vì

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 cung cấp cho bạn nhiều quyền kiểm soát cấp thấp hơn, bạn có thể nhận và đặt tham số cho thiết bị đầu vào và đầu ra của mình, đồng thời kiểm tra tải CPU và độ trễ đầu vào hoặc đầu ra

Nó cũng cho phép bạn phát và ghi âm thanh ở chế độ gọi lại, trong đó chức năng gọi lại được chỉ định được gọi khi cần có dữ liệu mới để phát lại hoặc có sẵn để ghi. Các tùy chọn này làm cho

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 trở thành một thư viện phù hợp để sử dụng nếu nhu cầu âm thanh của bạn vượt ra ngoài khả năng phát lại đơn giản

Bây giờ bạn đã biết cách sử dụng một số thư viện khác nhau để phát âm thanh, đã đến lúc xem cách bạn có thể sử dụng Python để tự ghi âm

Loại bỏ các quảng cáo

Ghi âm thanh

Thư viện

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0 và
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 cung cấp cách ghi âm bằng Python. Bản ghi
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0 vào mảng NumPy và bản ghi
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1 vào đối tượng
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0. Cả hai thứ này đều có thể được lưu trữ dưới dạng tệp WAV bằng cách sử dụng thư viện
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3['myfile.mp3']
play[sound]
8 và
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3['myfile.mp3']
play[sound]
9 tương ứng

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0 cho phép bạn ghi lại âm thanh từ micrô của mình và lưu trữ dưới dạng mảng NumPy. Đây là một kiểu dữ liệu tiện dụng để xử lý âm thanh có thể được chuyển đổi sang định dạng WAV để lưu trữ bằng mô-đun
sound = AudioSegment.from_file['myfile.wma', 'wma']
2. Đảm bảo cài đặt mô-đun
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3['myfile.mp3']
play[sound]
8 cho ví dụ sau [
sound = AudioSegment.from_file['myfile.wma', 'wma']
4]. Điều này sẽ tự động cài đặt NumPy như một trong những phần phụ thuộc của nó

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
1

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1

, bạn đã học cách phát âm thanh bằng cách đọc một. Thay vào đó, việc ghi âm thanh có thể được thực hiện bằng cách ghi vào luồng này

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
2

Bây giờ bạn đã biết cách ghi âm bằng

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
0 và
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1, bạn sẽ tìm hiểu cách chuyển đổi bản ghi của mình [hoặc bất kỳ tệp âm thanh nào khác] sang nhiều định dạng âm thanh khác nhau

Lưu và chuyển đổi âm thanh

Bạn rằng bạn có thể sử dụng mô-đun

sound = AudioSegment.from_file['myfile.wma', 'wma']
2 để lưu trữ các mảng NumPy dưới dạng tệp WAV. Mô-đun
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
00 tương tự cho phép bạn chuyển đổi giữa các tệp WAV và mảng NumPy. Nếu bạn muốn lưu trữ âm thanh của mình ở một định dạng tệp khác, thì
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2 và
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0 sẽ rất hữu ích vì chúng cho phép bạn đọc và ghi nhiều định dạng tệp phổ biến [chẳng hạn như MP3, FLAC, WMA và FLV]

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
00

Mô-đun này phụ thuộc vào

import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms
9 và cho phép bạn đọc các tệp WAV dưới dạng mảng NumPy và lưu các mảng NumPy dưới dạng tệp WAV

Để lưu một mảng NumPy dưới dạng tệp WAV, bạn có thể sử dụng

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
05

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
3

Trong ví dụ này,

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
06 là một mảng NumPy chứa âm thanh,
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
07 là tốc độ lấy mẫu của bản ghi [thường là 44100 hoặc 44800 Hz] và
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
08 là độ rộng lấy mẫu của âm thanh [số byte trên mỗi mẫu, thường là 1 hoặc 2 byte

import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0

Thư viện

import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0 có thể đọc và viết tất cả. Mặc dù không thể phát lại âm thanh nhưng nó cho phép bạn chuyển đổi âm thanh từ và sang FLAC, AIFF và một số định dạng âm thanh ít phổ biến hơn. Để chuyển đổi tệp WAV sang FLAC, bạn có thể sử dụng đoạn mã sau

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
4

Mã tương tự sẽ hoạt động để chuyển đổi giữa các định dạng tệp khác được hỗ trợ bởi

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
11

Loại bỏ các quảng cáo

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2

import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2 cho phép bạn lưu âm thanh trong , bao gồm gần như tất cả các loại âm thanh bạn có thể gặp trong cuộc sống hàng ngày. Ví dụ: bạn có thể chuyển đổi tệp WAV của mình sang MP3 bằng mã sau

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
5

Sử dụng

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
16 là cách tải tệp âm thanh tổng quát hơn. Ví dụ: nếu bạn muốn chuyển đổi lại tệp của mình từ MP3 sang WAV, bạn có thể thực hiện như sau

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
6

Mã này sẽ hoạt động với mọi định dạng tệp âm thanh

So sánh các thư viện âm thanh

Dưới đây là bảng tiện dụng so sánh chức năng của các thư viện được thảo luận trong hướng dẫn này

LibraryPlatformPlaybackRecordConvertDependencies

import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
7Cross-platformWAV, MP3--None
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8Cross-platformWAV, array,
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0--None
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
9WindowsWAV--None
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
22Cross-platformNumPy arrayNumPy array-
import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms
9,
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
2Cross-platform-
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
8,
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
4
import numpy as np
import simpleaudio as sa

frequency = 440  # Our played note will be 440 Hz
fs = 44100  # 44100 samples per second
seconds = 3  # Note duration of 3 seconds

# Generate array with seconds*sample_rate steps, ranging between 0 and seconds
t = np.linspace[0, seconds, seconds * fs, False]

# Generate a 440 Hz sine wave
note = np.sin[frequency * t * 2 * np.pi]

# Ensure that highest value is in 16-bit range
audio = note * [2**15 - 1] / np.max[np.abs[note]]
# Convert to 16-bit data
audio = audio.astype[np.int16]

# Start playback
play_obj = sa.play_buffer[audio, 1, 2, fs]

# Wait for playback to finish before exiting
play_obj.wait_done[]
1Cross-platform
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0
import winsound

filename = 'myfile.wav'
winsound.PlaySound[filename, winsound.SND_FILENAME]
0-
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3['myfile.mp3']
play[sound]
9
import simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file[filename]
play_obj = wave_obj.play[]
play_obj.wait_done[]  # Wait until sound has finished playing
00Cross-platform--WAV, NumPy array
import winsound

winsound.Beep[1000, 100]  # Beep at 1000 Hz for 100 ms
9,
from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3['myfile.mp3']
play[sound]
9
import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read[filename, dtype='float32']  
sd.play[data, fs]
status = sd.wait[]  # Wait until file is done playing
0Cross-platform

Các thư viện được bao gồm trong hướng dẫn này được chọn để dễ sử dụng và phổ biến. Để có danh sách toàn diện hơn về thư viện âm thanh cho Python, hãy xem trang wiki về âm thanh trong Python

Phần kết luận. Phát và ghi âm thanh bằng Python

Trong hướng dẫn này, bạn đã học cách sử dụng một số thư viện âm thanh phổ biến nhất để phát và ghi âm thanh trong Python. Bạn cũng đã xem cách lưu âm thanh của mình ở nhiều định dạng khác nhau

Bây giờ bạn có thể

  • Phát nhiều định dạng âm thanh, bao gồm mảng WAV, MP3 và NumPy
  • Ghi âm thanh từ micrô của bạn vào mảng NumPy hoặc Python
  • Lưu trữ âm thanh đã ghi của bạn ở nhiều định dạng khác nhau, bao gồm WAV và MP3
  • Chuyển đổi các tệp âm thanh của bạn sang nhiều định dạng âm thanh khác nhau

Bây giờ bạn đã có thông tin cần thiết để giúp bạn quyết định sử dụng thư viện nào để bắt đầu làm việc với âm thanh trong Python. Tiếp tục và phát triển một số ứng dụng âm thanh tuyệt vời

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Phát và ghi âm thanh bằng Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Joska de Langen

Joska là một Ordina Pythoneer viết cho Real Python

» Thông tin thêm về Joska

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Joanna

Mike

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Bạn có thể chơi nhạc bằng Python không?

Phát âm thanh trên Python dễ dàng . Có một số mô-đun có thể phát tệp âm thanh [. sóng]. Các giải pháp này là đa nền tảng [Windows, Mac, Linux].

Chủ Đề