Umgang mit Sounds in Python

Umgang mit Sounds in Python

Ich habe nicht verstanden, wie man mit Sound in Python umgeht, also habe ich es grob zusammengefasst.

Grundsätzlich habe ich auf diese Site Abspielen und Aufnehmen von Sound in Python verwiesen.

Wiedergabe

Ein Beispiel für eine Bibliothek, die Audio wiedergibt

playsound

Es wird nur die Wiedergabesound-Funktion implementiert und eine WAV-Datei oder MP3-Datei angegeben und abgespielt.

install

pip install playsound

usage

from playsound import playsound

playsound("sample.wav")

simpleaudio

Spielen Sie eine WAV-Datei oder ein NumPy-Array ab. Es ist auch möglich festzustellen, ob es abgespielt wird.

install

pip install simpleaudio

usage

import simpleaudio

wav_obj = simpleaudio.WaveObject.from_wave_file("sample.wav")
play_obj = wav_obj.play()
play_obj.wait_done()
#Überprüfen Sie, ob es abgespielt wird
if play_obj.is_playing():
	print("still playing")

winsound

Ist Winsound für Windows standardmäßig verfügbar? Die Wiedergabe von WAV-Dateien und die Wiedergabe von Signaltönen sind möglich.

usage

import winsound

winsound.PlaySound("sample.wav", winsound.SND_FILENAME)
#Piepton abspielen
import winsound

winsound.Beep(1000, 100) #Spielen Sie 100 ms lang einen 1000-Hz-Piepton

python-sounddevice

Bietet Bindung für die PortAudio-Bibliothek. Bietet Funktionen zum Abspielen / Aufzeichnen von Audiosignalen und NumPy-Arrays.

install

Wenn Sie Anaconda verwenden, können Sie es mit dem Conda-Paket installieren

conda install -c conda-forge python-sounddevice

usage

import sounddevice as sd
import wave
import numpy as np

wf = wave.open("sample.wav")
fs = wf.getframerate()
data = wf.readframes(wf.getnframes())
data = np.frombuffer(data, dtype='int16')

sd.play(data, fs)
status = sd.wait()

Das Obige behandelt den gesamten Song auf einmal, aber wenn eine Echtzeitverarbeitung durchgeführt wird, ist es notwendig, Audiosignale in kurzen Einheiten durch Rückrufverarbeitung zu verarbeiten.

import sounddevice as sd

duration = 5.5

def callback(indata, outdata, frames, time, status):
    if status:
        print(status)
    outdata[:] = indata

with sd.Stream(channels=2, callback=callback):
    sd.sleep(int(duration * 1000))

pydub

install

pip install pydub

Wenn Sie andere Dateien als WAV wie MP3 verwenden, müssen Sie auch ffmpeg oder libav installieren.

Darüber hinaus müssen Sie eine der folgenden Optionen installieren, um Audio abzuspielen (simpleaudio wird empfohlen).

usage

from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_file("sample.wav", format="wav")
play(sound)

pyaudio

Bietet Bindung für die PortAudio-Bibliothek. Einfache Audiowiedergabe und Aufnahme plattformübergreifend.

Das Abspielen von einfachem Audio ist komplizierter als andere Methoden. Wenn Sie also nur eine Datei abspielen möchten, sollten Sie eine andere Methode wählen.

Es ist jedoch möglich, Eingabe- / Ausgabegeräte einzustellen und die Latenz für die Steuerung auf einer niedrigeren Ebene zu überprüfen. Da es im Rückruf beschrieben werden kann, eignet es sich auch zur Durchführung einer relativ komplizierten Verarbeitung.

install

pip install pyaudio

#Auch mit conda möglich
conda install pyaudio

usage

import pyaudio
import wave
import sys

chunk = 1024

wf = wave.open("sample.wav", "rb")
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True)
data = wf.readframes(chunk)

while data != '':
    stream.write(data)
    data = wf.readframes(chunk)

stream.stop_stream()
stream.close()
p.terminate()

Aufzeichnung

Ein Beispiel für eine Bibliothek, die Audio aufnehmen kann

python-sounddevice

usage

import sounddevice as sd
from scipy.io.wavfile import write

record_second = 3
fs = 44100

myrecording = sd.rec(int(record_second * fs), samplerate=fs, channels=2)

write('output.wav', fs, myrecording)

pyaudio

usage

import pyaudio
import wave

chunk = 1024
format = pyaudio.paInt16
channels = 2
fs = 44100
record_second = 3

p = pyaudio.PyAudio()
stream = p.open(format=format, channels=channels, rate=fs, input=True, frames_per_buffer=chunk)

print("* recording")

frames = []

for i in range(int(fs / chunk * record_second)):
    data = stream.read(chunk)
    frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open("output.wav", "wb")
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(format))
wf.setframerate(fs)
wf.writeframes(b''.join(frames))
wf.close()

Gerät

Da Sie möglicherweise das Wiedergabe- / Aufnahmegerät angeben möchten, überprüfen Sie, wie Sie es in jeder Bibliothek ändern können.

python-sounddevice

Verfügbare Geräte und ausgewählte Geräte anzeigen

import sounddevice as sd
sd.query_devices()

Ausführungsbeispiel b985e173.png

Sie können auch den folgenden Befehl auf dem Terminal verwenden.

python -m sounddevice

Die Geräteauswahl ist möglich, indem Sie die Geräte-ID auf "default.device" setzen oder sie als Geräteargument "play ()" und "Stream ()" zuweisen.

import sounddevice as sd
sd.default.device = 1, 5

Recommended Posts

Umgang mit Sounds in Python
Betreiben Sie LibreOffice mit Python
Arbeiten mit LibreOffice in Python: Importieren
Arbeiten mit DICOM-Bildern in Python
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
[Einführung für Anfänger] Umgang mit MySQL mit Python
Schaben mit Selen in Python
Schaben mit Chromedriver in Python
Debuggen mit pdb in Python
Python: Arbeiten mit Firefox mit Selen
Scraping mit Selen in Python
Scraping mit Tor in Python
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
Zahlenerkennung in Bildern mit Python
GOTO in Python mit erhabenem Text 3
Scraping mit Selen in Python (Basic)
CSS-Analyse mit cssutils in Python
Numer0n mit Elementen, die mit Python erstellt wurden
Öffnen Sie UTF-8 mit Stückliste in Python
Verwenden Sie rospy mit virtualenv in Python3
Verwenden Sie Python in pyenv mit NeoVim
Heatmap mit Dendrogramm in Python + Matplotlib
Lesen Sie Dateien parallel zu Python
Passwort für Lehrbuch mit Python generieren
Verwenden Sie OpenCV mit Python 3 in Window
Bis zum Umgang mit Python in Atom
Beginnen Sie mit Python mit Blender
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Versuchen Sie, sich mit Python bei qiita anzumelden
Stresstest mit Locust in Python geschrieben
Exklusive Steuerung mit Sperrdatei in Python
Statistik mit Python
Geräteüberwachung durch On-Box Python von IOS-XE
Metaanalyse in Python
Unittest in Python
Python mit Go
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Tipps zum Umgang mit Binärdateien in Python
Zeigen Sie Python 3 im Browser mit MAMP an
Twilio mit Python
Epoche in Python
Zwietracht in Python
In Python integrieren
So arbeiten Sie mit BigQuery in Python
Trump-Klasse in Python (mit Vergleich)
Deutsch in Python
DCI in Python