Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 7
1

Как извлечь из wav-файла два канала?

25.09.2013, 21:47. Показов 2959. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток)
Есть код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import wave
import math
import struct
fileName = "audio.wav"#file to be imported (change this)
#read file and get data
w = wave.open(fileName, 'r')
numframes = w.getnframes()
frame = w.readframes(numframes)#w.getnframes()
frameInt = map(ord, list(frame))#turn into array
#separate left and right channels and merge bytes
frameOneChannel = [0]*numframes#initialize list of one channel of wave
for i in range(numframes):
    frameOneChannel[i] = frameInt[4*i+1]*2**8+frameInt[4*i]#separate channels and store one channel in new list
    if frameOneChannel[i] > 2**15:
        frameOneChannel[i] = (frameOneChannel[i]-2**16)
    elif frameOneChannel[i] == 2**15:
        frameOneChannel[i] = 0
    else:
        frameOneChannel[i] = frameOneChannel[i]
#convert to string
audioStr = ''
for i in range(numframes):
    audioStr += str(frameOneChannel[i])
    audioStr += " "#separate elements with comma
fileName = fileName[:-3]#remove .wav extension
text_file = open(fileName+"txt", "w")
text_file.write("%s"%audioStr)
text_file.close()
Данный код сохраняет в текстовый файл 1 канал из wav файла, но у меня файл 2х канальный, я переписал строку

Python
1
2
3
frameOneChannel[i] = frameInt[4*i+1]*2**8+frameInt[4*i]
к виду: 
frameOneChannel[i] = frameInt[2*i+1]*2**8+frameInt[2*i]
и теперь я сохраняю в файл 2 канала, но всего лишь половину файла, а не весь.
Буду очень рад, если объясните как писать все 2х канала сразу и записывать весь файл, а не его первую половину.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2013, 21:47
Ответы с готовыми решениями:

Деление Wav-файла на два канала
Реализовать функцию разделяющую входной wav файл на каналы (на два выходных файла) с возможностью...

Как извлечь из wav-файла его свойства (частота, количество каналов)
Как извлечь из waw-файла его свойства(частота, количество канало і т.п)

Как склеить два wav-файла?
est' programa kotoraya proiznosit chislo, po analogii s perevodom chisla v text. Problema v tom...

Как склеить два файла wav?
вот есть код с инета выдрал, но не могу догнать где ошибка, чтобы правильно без ошибок склеились...

Как программно склеить два wav-файла в один?
Подскажите, пожалуйста, как програмно склеить два wav-файла в один.

0
25.09.2013, 21:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2013, 21:47
Помогаю со студенческими работами здесь

Как склеить два WAV файла для записи?
Как 'склеить' два или больше wav файлов в один (конечный)файл для записи????

Как воспроизвести два wav-файла одновременно (второй с некоторой задержкой)?
Как воспроизвести два wav-файла одновременно(второй с некоторой задержкой)?

Микшировать два wav файла
Имеются два одинаковых wav файла одной длины как наложить их друг на друга (микшировать)? Возможно...

Склеить два wav-файла
/* Написать программу, формирующую из двух WAV файлов третий путем конкатенации файлов. */ ...

Объединить два wav файла
Реализовать функцию, объединяющую два wav файла в один путем добавления отсчетов второго в конец...

Как программно "склеить" два .WAV файла?
Сегодня с удивлением обнаружил, что если прочитать с диска два файла .MP3 в две строковые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru