π ΠΠΎΠ²ΠΈΡΠΎΠΊ? Π£Π·Π½Π°ΠΉ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π³ΠΎΠ»ΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python!
ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π³ΠΎΠ»ΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python?
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π°ΡΠ΄ΠΈΠΎ Ρ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½Π° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ sounddevice. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import sounddevice as sd
import soundfile as sf
def record_audio(duration, file_name):
fs = 44100 # Π§Π°ΡΡΠΎΡΠ° Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ
recording = sd.rec(int(duration * fs), samplerate=fs, channels=1)
sd.wait()
sf.write(file_name, recording, fs)
duration = 5 # ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
)
file_name = "audio.wav" # ΠΠΌΡ ΡΠ°ΠΉΠ»Π° Π·Π°ΠΏΠΈΡΠΈ
record_audio(duration, file_name)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΡΡΠ½ΠΊΡΠΈΡ record_audio ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: duration (ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ) ΠΈ file_name (ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π·Π°ΠΏΠΈΡΠΈ). ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ sounddevice Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π°ΡΠ΄ΠΈΠΎ Ρ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½Π° ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ».
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ sounddevice ΠΈ soundfile. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip:
pip install sounddevice soundfile
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ½ ΡΠΎΡ ΡΠ°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π·Π²ΡΠΊ Π² ΡΠ°ΠΉΠ» Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ "audio.wav").
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π³ΠΎΠ»ΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Python Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π·Π²ΡΠΊΠ° Ρ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½Π°. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ sounddevice, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΡΠ΄ΠΈΠΎΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ.
Π¨Π°Π³ 1: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° sounddevice
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ Π·Π°ΠΏΠΈΡΡ Π³ΠΎΠ»ΠΎΡΠ°, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ sounddevice. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install sounddevice
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ pip.
Π¨Π°Π³ 2: ΠΠ°ΠΏΠΈΡΡ Π³ΠΎΠ»ΠΎΡΠ°
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ sounddevice ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π·Π°ΠΏΠΈΡΠΈ Π³ΠΎΠ»ΠΎΡΠ°. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import sounddevice as sd
def callback(indata, frames, time, status):
# ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠ΄ΠΈΠΎ Π΄Π°Π½Π½ΡΡ
Π·Π΄Π΅ΡΡ
sd.default.samplerate = 44100
sd.default.channels = 2
sd.Stream(callback=callback)
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°:
- ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ sounddevice ΠΈ Π΄Π°Π΅Ρ Π΅ΠΌΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ sd Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°.
- ΠΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° (callback), ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡΡΠΈΠΈ Π°ΡΠ΄ΠΈΠΎΠ΄Π°Π½Π½ΡΡ .
- Π’ΡΠ΅ΡΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΠΎΡΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π·Π²ΡΠΊΠ°.
- ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°.
ΠΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ "# ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠ΄ΠΈΠΎ Π΄Π°Π½Π½ΡΡ Π·Π΄Π΅ΡΡ" Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π·Π²ΡΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·
Π¨Π°Π³ 3: ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ
Π§ΡΠΎΠ±Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°ΡΡ Ctrl+C Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² Π²Π°Ρ ΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
stream = sd.Stream(callback=callback)
stream.start()
# ΠΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠ΄ΠΈΠΎ Π΄Π°Π½Π½ΡΡ
stream.stop()
stream.close()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ "stream" ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ start(), stop() ΠΈ close() Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π³ΠΎΠ»ΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π°ΡΠ΄ΠΈΠΎΠ΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ. Π£ΡΠΏΠ΅Ρ ΠΎΠ² Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ Python!