Python에서 사인파 사운드를 생성해야하며 주파수, 지속 시간 및 상대 볼륨을 제어 할 수 있어야합니다. '생성'이란 파일에 저장하지 않고 스피커를 통해 즉시 재생하기를 원한다는 의미입니다.
이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?
- 답변 # 1
- 답변 # 2
ivan-onys는 훌륭한 답변을했지만 그에 약간의 추가 사항이 있습니다. 이 스크립트는 Pyaudio 쓰기 메소드에 float32의 문자열 데이터가 필요하기 때문에 예상보다 4 배 짧은 사운드를 생성하지만 numpy 배열을이 메소드에 전달하면 전체 배열을 엔티티로 문자열로 변환하므로 numpy 배열의 데이터를 바이트 시퀀스는 다음과 같습니다 :
samples = (np.sin(2*np.pi*np.arange(fs*duration)*f/fs)).astype(np.float32).tobytes()
이 라인도 변경해야합니다 :
stream.write(samples)
- 답변 # 3
Pygame multimedia 라이브러리는 Python에서 사운드를 처리하는보다 일관되고 쉬운 설치 방법 중 하나입니다.
이것을 추천합니다-pygame.sndarray 서브 모듈이 있습니다.이 모듈은 pygame.mixer 모듈에서 재생할 수있는 고수준 사운드 객체가되는 데이터 벡터의 숫자를 조작 할 수 있습니다.
pypy.org 사이트의 문서는 sndarray 모듈을 사용하기에 충분해야합니다.
- 답변 # 4
Python 3.5 이상에서 가장 좋은 방법은 개발자가 권장하는 패키지를 설치하는 것입니다.
http://people.csail.mit.edu/hubert/pyaudio/
데비안에서는
sudo apt-get install python3-all-dev portaudio19-dev
pyaudio를 설치하기 전에
- 답변 # 5
bregman lab 툴박스에는 원하는 기능을 정확하게 수행하는 일련의 기능이 있습니다. 이 파이썬 모듈은 약간 버그가 있지만 자신의 기능을 얻기 위해이 코드를 조정할 수 있습니다
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- JavaScript 변수를 HTML div에 '출력'하는 방법
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 문자열에서 특정 문자 제거