Python 오디 오 조작 도구 PyAudio 시작 튜 토리 얼 상세 설명
0.도입부
파 이 썬 을 사용 하여 오디 오 데 이 터 를 처리 해 야 할 때 파 이 썬 을 사용 하여 소 리 를 읽 고 재생 하 는 것 이 필요 합 니 다.다음은 오디 오 파 이 오디 오 를 처리 하 는 데 사용 할 수 있 는 도구 패 키 지 를 소개 합 니 다.
PyAudio 는 Python 오픈 소스 패키지 로 이름 의 의미 로 음성 조작 을 제공 하 는 패키지 입 니 다.음성 영역의 OpenCv 로 볼 수 있 는 녹음 재생 처리 등 기능 을 제공한다.
1.프로필
PyAudio 는 크로스 플랫폼 오디 오 I/O 라 이브 러 리 PortAudio 에 Python 바 인 딩 을 제공 합 니 다.PyAudio 를 사용 하면 Python 을 사용 하여 각종 플랫폼 에서 오디 오 를 재생 하고 녹음 할 수 있 습 니 다.예 를 들 어 GNU/Linux,Microsoft Windows 와 Apple Mac OS X/macOS 등 입 니 다.
PyAudio 의 영감 은:
현재 버 전 은 PyAudio v 0.2.11 입 니 다.대부분의 플랫폼 에서 pip 를 사용 하여 PyAudio 를 설치 합 니 다.v 0.2.9 이전 버 전에 대해 PyAudio 는 바 이 너 리 파일 을 설치 하 는 것 을 나 누 어 주 었 습 니 다. 여기에 보관 하 다. 。
마이크로소프트 윈도우
사용pip설치:
python -m pip install pyaudio
메모:
brew install portaudio
pip install pyaudio
메모:패키지 관리자 로 PyAudio 설치 하기:
sudo apt-get install python-pyaudio python3-pyaudio
최신 버 전의 PyAudio 가 없 으 면 pip 로 설치 하 십시오.pip install pyaudio
메모:portaudio19-dev
와 python 개발 패키지python-all-dev
를 미리 설치 하 십시오.소스 코드 는 Python Package Index(PyPI)에서 다운로드 할 수 있 습 니 다:pypi.python.org/pypi/PyAudio.
git 저장 소 복제:
git clone https://people.csail.mit.edu/hubert/git/pyaudio.git
소스 코드 에서 PyAudio 를 구축 하려 면 PortAudio v19 를 구축 해 야 합 니 다.다양한 플랫폼 을 위 한 PyAudio 구축 에 대한 설명 은 컴 파일 알림 을 참조 하 시기 바 랍 니 다.Microsoft Visual Studio 를 사용 하여 PyAudio 를 구축 하려 면 Sebastian Audet 의 설명 을 보십시오.3.예시
1).오디 오 채집
컴퓨터 마이크 에서 오디 오 를 수집 하 는 방법 을 코드 로 보 여 줍 니 다.오디 오 를 수집 하 는 시간 은 4s 이 고 파일 output.wav 를 저장 하 는 방법 입 니 다.
tqdm 모듈 을 사용 하여 읽 기 과정 을 쉽게 표시 할 수 있 습 니 다.다음 과 같 습 니 다.
* recording
100%|| 172/172 [00:03<00:00, 43.40it/s]
* done recording
import pyaudio
import wave
from tqdm import tqdm
def record_audio(wave_out_path,record_second):
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
wf = wave.open(wave_out_path, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
print("* recording")
for i in tqdm(range(0, int(RATE / CHUNK * record_second))):
data = stream.read(CHUNK)
wf.writeframes(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf.close()
record_audio("output.wav",record_second=4)
PyAudio 를 사용 하려 면 먼저 사용pyaudio.PyAudio()
(1)파 이 오디 오 예화 ,portaudio 시스템 을 설정 합 니 다.오디 오 를 녹음 하거나 재생 하려 면 사용 하 십시오
pyaudio.PyAudio.open()
(2)필요 한 장치 에서 필요 한 오디 오 매개 변수의 흐름 을 엽 니 다.이것 은pyaudio.Stream
오디 오 를 재생 하거나 녹음 하 는 것 을 설정 했다.스 트림 전송
pyaudio.Stream.write()
오디 오 데 이 터 를 사용 하거나 스 트림 전송 오디 오 데 이 터 를 사용 하여 오디 오 를 재생 합 니 다. pyaudio.Stream.read()
。(3)'저지 모드'에서 각각
pyaudio.Stream.write()
또는 pyaudio.Stream.read()
주어진/요청 한 프레임 이 재생/기 록 될 때 까지 막 습 니 다.또는 오디 오 데 이 터 를 동적 으로 생 성하 거나 녹 음 된 오디 오 데 이 터 를 즉시 처리 하려 면 아래 에 개 술 된'리 셋 모드'를 사용 하 십시오.pyaudio.Stream.stop_stream()
을 사용 하여 재생/녹 화 를 중단 하고pyaudio.Stream.close()
스 트림 을 종료 합 니 다.(4)마지막 으로
pyaudio.PyAudio.terminate()
(5)portaudio 세 션 을 종료 합 니 다.2).오디 오 재생
다음 재생 기능 을 사용 하여 1)에 저 장 된 오디 오 output.wav 를 재생 합 니 다.
tqdm 를 통 해 재생 진 도 를 표시 합 니 다.다음 과 같 습 니 다.
100%|| 172/172 [00:03<00:00, 43.40it/s]
"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
from tqdm import tqdm
def play_audio(wave_path):
CHUNK = 1024
wf = wave.open(wave_path, 'rb')
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
# open stream (2)
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
# read data
data = wf.readframes(CHUNK)
# play stream (3)
datas = []
while len(data) > 0:
data = wf.readframes(CHUNK)
datas.append(data)
for d in tqdm(datas):
stream.write(d)
# stop stream (4)
stream.stop_stream()
stream.close()
# close PyAudio (5)
p.terminate()
play_audio("output.wav")
2).오디 오 재생 방식다른 프로그램 을 실행 할 때 오디 오 를 동시에 재생 해 야 할 때 리 셋 방식 으로 재생 할 수 있 습 니 다.예제 코드 는 다음 과 같 습 니 다.
"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
from tqdm import tqdm
import time
def play_audio_callback(wave_path):
CHUNK = 1024
wf = wave.open(wave_path, 'rb')
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
def callback(in_data, frame_count, time_info, status):
data = wf.readframes(frame_count)
return (data, pyaudio.paContinue)
# open stream (2)
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True,
stream_callback=callback)
# read data
stream.start_stream()
while stream.is_active():
time.sleep(0.1)
# stop stream (4)
stream.stop_stream()
stream.close()
# close PyAudio (5)
p.terminate()
play_audio_callback("output.wav")
Reference:1. http://people.csail.mit.edu/hubert/pyaudio/
총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 Python 오디 오 조작 도구 인 PyAudio 에 대한 상세 한 설명 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.