Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 3, 2013 07:16:24

fresh
Зарегистрирован: 2013-12-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помошь с wav файлом

помогите пожалуйста.
не понимаю как делать сделал нарезку, но в отдельные файлы. а нужно склеить в один

задачка для реализации на питоне будет такая
Аргументы скрипта: Путь к входной директории, путь к директории с результатом
Задача скрипта: Нарезать все wav из входной директории в соответствии с информацией указанной в файле lab. Имена wav и lab файлов совпадают.
Описание:
Каждому файлу wav соответствует файл lab. В файле lab в текстовом виде записана информация о границах нарезки.
пример lab,
36000000 45400000 1
45400000 148200000 2
148200000 155100000 1
155100000 213000000 2
222500000 242800000 2
242800000 254200000 1
254200000 278500000 2
первое число это начало фрагмента, второе число это конец фрагмента, далее “текст” фрагмента.
Необходимо разрезать wav по границам фрагментов и потом склеить все фрагменты с текстом 1 в один файл и все фрагменты с текстом 2 в другой файл. Фрагменты из разных wav не перемешивать.
В результате для каждого исходного имя.wav должны появиться в директории с результатом два файла имя_SD_1.wav и имя_SD_2.wav
вот что я на данный момент реализовал:

import math
import pyaudio
import wave
myfile = open(r"C:\Users\kulikov_aa\test.txt")
i=0
for line in myfile.readlines():
    wf = wave.open( r"C:\Users\kulikov_aa\test.wav", 'rb')
    i+=1;
    length=line.__len__();#the length by line
    one= line.find(' ')
    firstFragment="";
    firstFragment=line[0:one]#first fragment
    two=firstFragment.__len__()#the lenght of fragment
    firstontwo=line[two+1:length];#one step for two fragment
    three=firstontwo.find(' ');
    twoFragment=firstontwo[0:three];#two fragment
    four=twoFragment.__len__()
    five=firstontwo[four:length]#three fragment
    if int(five)==1:
        WAVE_OUTPUT_FILENAME = r"C:\Users\kulikov_aa\testA"+str(i)+".wav"
        p = pyaudio.PyAudio()
        print firstFragment+" "+twoFragment;
        start = float(firstFragment)*(math.pow(10,-7))
        end = float(twoFragment)*(math.pow(10,-7))
        frameRate = wf.getframerate()
        nChannels = wf.getnchannels()
        sampWidth = wf.getsampwidth()
        wf.setpos(start*frameRate)
        data = wf.readframes(int((end-start)*frameRate))
        wf3 = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
        wf3.setnchannels(nChannels)
        wf3.setsampwidth(sampWidth)
        wf3.setframerate(frameRate)
        wf3.writeframes(data)
        wf3.close()
        p.terminate()

Отредактировано fresh (Дек. 3, 2013 07:16:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version