Python 오디 오 조작 도구 PyAudio 시작 튜 토리 얼 상세 설명


0.도입부
파 이 썬 을 사용 하여 오디 오 데 이 터 를 처리 해 야 할 때 파 이 썬 을 사용 하여 소 리 를 읽 고 재생 하 는 것 이 필요 합 니 다.다음은 오디 오 파 이 오디 오 를 처리 하 는 데 사용 할 수 있 는 도구 패 키 지 를 소개 합 니 다.
PyAudio 는 Python 오픈 소스 패키지 로 이름 의 의미 로 음성 조작 을 제공 하 는 패키지 입 니 다.음성 영역의 OpenCv 로 볼 수 있 는 녹음 재생 처리 등 기능 을 제공한다.
1.프로필
PyAudio 는 크로스 플랫폼 오디 오 I/O 라 이브 러 리 PortAudio 에 Python 바 인 딩 을 제공 합 니 다.PyAudio 를 사용 하면 Python 을 사용 하여 각종 플랫폼 에서 오디 오 를 재생 하고 녹음 할 수 있 습 니 다.예 를 들 어 GNU/Linux,Microsoft Windows 와 Apple Mac OS X/macOS 등 입 니 다.
PyAudio 의 영감 은:
  • pyPortAudio / fastaudio :PortAudio  v18  API 의 Python 바 인 딩.
  •   tkSnack:Tcl/Tk 와 Python 의 크로스 플랫폼 사 운 드 패키지 입 니 다.
  • 2.설치
    현재 버 전 은 PyAudio v 0.2.11 입 니 다.대부분의 플랫폼 에서 pip 를 사용 하여 PyAudio 를 설치 합 니 다.v 0.2.9 이전 버 전에 대해 PyAudio 는 바 이 너 리 파일 을 설치 하 는 것 을 나 누 어 주 었 습 니 다.  여기에 보관 하 다.
    마이크로소프트 윈도우
    사용pip설치:python -m pip install pyaudio메모:
  • pip 가 Python 설치 와 묶 이지 않 았 다 면이곳에서 가 져 오 십시오. 。
  • pip 는 PyAudio 바퀴(미리 포 장 된 바 이 너 리 파일)를 가 져 오고 설치 합 니 다.현재 파 이 썬 2.7,3.4,3.5,3.6 을 호 환 하 는 바퀴 가 있다. 의  정부 에서 발행 하 다판.이 버 전에 대해 서 는 32 비트 와 64 비트 바퀴 를 사용 할 수 있 습 니 다.
  • 이 바 이 너 리 파일 들 은 MinGW 로 구 축 된 PortAudio v19 v190600 을 포함한다.20161030。DirectX,ASIO 등에 대한 지원 은 포함 되 지 않 고 Windows MME API 만 지원 합 니 다.포함 되 지 않 은 API 를 지원 하려 면 PortAudio 와 PyAudio 를 컴 파일 해 야 합 니 다.Apple Mac OS X.
  • Homebrew에 필요 한 portaudio 라 이브 러 리 를 설치 한 다음 pip 로 PyAudio 를 설치 합 니 다.
    
    brew install portaudio 
    pip install pyaudio
    메모:
  • 설치 되 지 않 았 다 면 다운로드 하 십시오.  Homebrew
  • pip 는 PyAudio 소스 코드 를 다운로드 하여 Python 버 전 을 구축 합 니 다.
  • Homebrew 와 PyAudio 를 구축 하려 면 Xcode 명령 행 도구(더 많은 정보)를 설치 해 야 합 니 다.
  • Debian / Ubuntu
    패키지 관리자 로 PyAudio 설치 하기:sudo apt-get install python-pyaudio python3-pyaudio최신 버 전의 PyAudio 가 없 으 면 pip 로 설치 하 십시오.pip install pyaudio메모:
  • pip 는 PyAudio 소스 를 다운로드 하여 시스템 을 구축 합 니 다.portaudio 라 이브 러 리 개발 패키지portaudio19-dev와 python 개발 패키지python-all-dev를 미리 설치 하 십시오.
  • 시스템 패 키 지 를 더욱 잘 격 리 하기 위해virtualenv에 PyAudio 를 설치 하 는 것 을 고려 하 십시오. 。
  •  PyAudio 원본
    소스 코드 는 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 에 대한 상세 한 설명 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
    만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

    좋은 웹페이지 즐겨찾기