2015-10-31 3 views
0

Я пытаюсь обработать аудиосигнал и разделить аудиосигнал на N дискретных выборок, а затем я хочу играть эти образцы независимо.Devide аудиосигнал на небольшие образцы

Как это сделать с помощью python?

+1

Почему этот вопрос помечен как «matlab»? – Daniel

+1

SO не является кодовым письмом. Попытайтесь написать это самостоятельно, и когда у вас возникнут проблемы, которые вы не можете решить с помощью Google, опубликуйте проблему и свой код. –

+0

импорт волна импорт математика w = wave.open ('song1.wav', 'r') fs = 11000; # частота выборки frame_duration = 0,04; frame_len = frame_duration * fs; N = 40000; num_frames = int (math.floor (N/frame_len)); #print num_frames для г в диапазоне (1, num_frames): кадр = w.readframes (1) –

ответ

0
import wave 
import pygame 
import time 



def slice(infile, outfilename, start_ms, end_ms): 
    width = infile.getsampwidth() #Returns sample width in bytes 
    rate = infile.getframerate() #Returns sampling frequency 
    fpms = rate/1000 # frames per ms 
    length = (end_ms - start_ms) * fpms 
    start_index = start_ms * fpms 

    out = wave.open(outfilename, "w") 
    out.setparams((infile.getnchannels(), width, rate, length, infile.getcomptype(), infile.getcompname())) 

    infile.rewind()    #Rewind the file pointer to the beginning of the audio stream 
    anchor = infile.tell()  #Return current file pointer position 
    infile.setpos(anchor + start_index) #Set the file pointer to the specified position 
    out.writeframes(infile.readframes(length)) #Write audio frames and make sure nframes is correct 


if __name__ == "__main__": 

    slice(wave.open("song1.wav", "r"), "out.wav", 500, 5000) 

    pygame.mixer.init() 
    pygame.mixer.music.load("out.wav") 
    pygame.mixer.music.play() 
    while pygame.mixer.music.get_busy() == True: 
      continue