2017-04-25 1 views
0

내 질문은이 게시물에서 물어 보는 질문과 비슷합니다. How to change continuously the frequency of a sinusoidal sound? 하지만 약간 혼란스러운 해결책을 발견했습니다. 톤이 연속되도록 여러 주파수 (즉, 서로 다른 주파수)를 연결하고 싶습니다. 전 위상 변화 문제를 알아 내려고 노력하고 있지만, 저는 방황하고 있습니다. 현재 여기에서 코드를 사용하고 있습니다 : http://milkandtang.com/blog/2013/02/16/making-noise-in-python/ 톤을 생성합니다. 정말 고마워요! 모든 통찰력이 인정됩니다pyaudio를 사용하여 주파수를 변경하는 동안 계속되는 소리

답변

0

pyaudio으로 작업하고 있습니다. 그러나 다른 라이브러리를 열어 놓은 경우 pydub을 사용하면 더 쉽게 해결할 수 있습니다.

귀하의 질문은 두 가지입니다.

  • 오디오 톤을 생성하는 방법은 무엇입니까?
  • 여러 음을 연결하는 방법은 무엇입니까?

pydub은 오디오 파일을 조작하기위한 간단하고 쉬운 고급 인터페이스를 제공합니다. 당신은 pydub은 1K, 2K의 사인파를 생성하는 샘플 예제에서 아래 사용되는 사인파 발생기를 제공, 그래서 첫 번째 부분에 대한
pip install pydub

를 사용하여 당신은 pydub 설치할 수 있습니다 더 많은 정보/예 here

을 찾을 수 있습니다 3 초 동안 3k.

다음을 audio_segments으로 변환합니다. 그 다음에는 각 세그먼트를 다른 세그먼트에 간단하게 추가하여 연결합니다.

crossfade은 병합 지점에서의 딱딱 소리를 방지하기 위해 2.5 초 간격으로 사용됩니다. 내가 실시간으로 사운드를 생성하기 위해 노력하고있어 경우

from pydub import AudioSegment 
from pydub.generators import Sine 
from pydub.playback import play 


#Generate 1k,2k,3k tones of 3 sec duration 
tone1 = Sine(1000).to_audio_segment(duration=3000) 
tone2 = Sine(2000).to_audio_segment(duration=3000) 
tone3 = Sine(3000).to_audio_segment(duration=3000) 

#Append each tone onto other with crossfade 
multitone = tone1.append(tone2, crossfade=2500).append(tone3, crossfade=2500) 


# Play final tone 
play(multitone) 
+0

일을 pydub겠습니까 : 여기

코드를 작동합니까? 나는 손의 위치를 ​​추적하기 위해 kinect를 사용하고 있으며, 그 위치에 따라 사운드의 주파수를 변경하고 싶습니다. 고맙습니다! –

+0

'pydub'은 기존의 audiframes와 함께 작동합니다. 레코딩을 위해 파이 오디오 데이터를 파이크 프레임으로 변환 할 수 있습니다. 그러나 응용 프로그램에서 판단 할 때 미리 또는 미리 컴파일하여 'pydub'을 사용하여 오디오 톤의 미리 결정된 세트를 생성하고 kinect 좌표와 혼합 및 일치시킬 수 있습니다. –