Форум: "Потрепаться";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизКак несколько wav файлов склеить в один? Найти похожие ветки
← →
Aristarh (2003-10-30 15:45) [0]Можно ли сделать подобное средствами делфи? Если нет, то возможно существуют какие-либо утилиты командной строки, которые позволяют любой внешней программе производить "склеивание"...
← →
Кулюкин Олег (2003-10-30 15:47) [1]COPY file1 + file2, file3
Вроде не соврал.
А на Дельфи - вычитывайте в TStream.
← →
isko (2003-10-30 15:57) [2]поищи формат wav файла - там просто шапка и дальше данные - первый канал второй канал и т.д.
тебе всего лишь нужно будет перекопировать данные и изменить данные в шапке.
← →
Opuhshii (2003-10-30 16:00) [3]а что вы подразумеваете под склеиванием?
← →
Opuhshii (2003-10-30 16:01) [4]2isko © (30.10.03 15:57) [2]
а ещё сменить глубину, частоту при их несовпадении,..
← →
Brahman (2003-10-30 16:01) [5]Кулюкин Олег © (30.10.03 15:47) [1]
К сожалению - соврал:)
wave-формат имеет заголовок и простое "склеивание" тут не поможет
struct {
char id[4];
DWORD len;
} riff_hdr;
char wave_id[4];
Вот это надо "отлепить" от второго файла, разницу "прилепить" к первому и скорректировать len в первом заголовке.
Речь о RIFF формате.
← →
WithOut Any ... (2003-10-30 16:03) [6]У Кулюкин Олег © (30.10.03 15:47) [1]
Все правильно, за исключением лишней запятой и пропущенного ключа, то есть:
COPY/b file1 + file2 file3
← →
SPeller (2003-10-30 16:04) [7]А лучше воспользоваться SoundForge.
← →
Aristarh (2003-10-30 16:04) [8]В модем(телефонную линию) с помощью библиотеки Async Pro необходимо передать несколько файлов последовательно, но в таком случае глотаются несколько первых милисекунд каждого файла, вот и пришла в голову мысль налету их склеивать в один временный файл, передавать его, а потом удалять.
И так по циклу для каждого звонка...
← →
Кулюкин Олег (2003-10-30 16:05) [9]
> Brahman © (30.10.03 16:01) [5]
> К сожалению - соврал:)
Вот я гад :))
> WithOut Any ... © (30.10.03 16:03) [6]
> У Кулюкин Олег © (30.10.03 15:47) [1]
> Все правильно за исключением лишней запятой и пропущенного ключа
В общем правильно, но в корне неверно :))))
← →
Brahman (2003-10-30 16:09) [10]WithOut Any ... © (30.10.03 16:03) [6]
Не надо советовать не по делу.
Итоговый файл воспроизведется только по file1.
← →
Кулюкин Олег (2003-10-30 16:11) [11]
> Brahman © (30.10.03 16:09) [10]
Судя по пояснениям автора, он склеивает порезанный wav.
А вот несколько настоящих вавов действительно склеивать бесполезно.
← →
Brahman (2003-10-30 16:13) [12]Бесполезно "склеивать" куски wav, если не откорректирован заголовок у первого.
← →
Кулюкин Олег (2003-10-30 16:15) [13]
> Brahman © (30.10.03 16:13) [12]
> Бесполезно "склеивать" куски wav, если не откорректирован
> заголовок у первого.
Да ну?
Если я сам его порезал, а затем склеил?
← →
Anatoly Podgoretsky (2003-10-30 16:17) [14]Он не то чтобы хочет склеить но зачем то удалить микропаузу при передаче, видимо опять не совсем четко объяснил, вместо того что нужно, объяснил технические детали.
← →
WithOut Any ... (2003-10-30 16:30) [15]В ответ на"
> WithOut Any ... © (30.10.03 16:03) [6]
> У Кулюкин Олег © (30.10.03 15:47) [1]
> Все правильно за исключением лишней запятой и пропущенного ключа
В общем правильно, но в корне неверно :))))
Ответ:
Уговорил, проверил и согласился. Но другие форматы обычно таким образом "склеивал"
Сорри
← →
Brahman (2003-10-30 16:35) [16]Кулюкин Олег © (30.10.03 16:15) [13]
Если "склеивание" посредством copy - то бесполезно.
Если иными средствами с редактированием суммарной длины в заголовке, то - Ок.
← →
blackman (2003-10-30 16:55) [17]>Если "склеивание" посредством copy - то бесполезно.
Это ты не прав.
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] источник [/A | /B]
[+ источник [/A | /B] [+ ...]] [результат [/A | /B]]
источник Имена одного или нескольких копируемых файлов.
/A Файл является текстовым файлом ASCII.
/B Файл является двоичным файлом.
/D Указывает на возможность создания зашифрованного файла
результат Каталог и/или имя для конечных файлов.
/V Проверка правильности копирования файлов.
/N Использование, если возможно, коротких имен при копировании
файлов, чьи имена не удовлетворяют стандарту 8.3.
/Y Подавление запроса подтверждения на перезапись существующего
конечного файла.
/-Y Обязательный запрос подтверждения на перезапись существующего
конечного файла.
/Z Копирование сетевых файлов с возобновлением.
Ключ /Y можно установить через переменную среды COPYCMD.
Ключ /-Y командной строки переопределяет такую установку.
По умолчанию требуется подтверждение, если только команда COPY
не выполняется в пакетном файле.
← →
Anatoly Podgoretsky (2003-10-30 16:58) [18]Если строго по вопросу, то COPY полность подходит и ничего искать не надо.
← →
Aristarh (2003-10-30 17:05) [19]>Anatoly Podgoretsky © (30.10.03 16:17) [14]
>видимо опять не совсем четко объяснил, вместо того что нужно,
>объяснил технические детали.
Лучше пояснение - это пример. Как в вопросе, так и в ответе.
Есть 4 wav файла:
пятнадцать.wav
рублей.wav
пятьдесят.wav
копеек.wav
Программа звонит абоненту, абонент снимает трубку и программа
начинает передавать в линию первый файл "пятнадцать.wav".
Как только этот файл передан, сразу за ним начинает передаваться
файл "рублей.wav" и т.д. В результате абонент должен услышать
фразу "пятнадцать рублей пятьдесят копеек".
Но перед каждым файлом происходит небольшая задержка, в
результате глотаются первые слоги слов и абонент слышит:
"..надцать ..блей ..десят ..пеек". Это недопустимо.
Поэтому я хочу передавать файлы НЕ поочереди друг за дружкой,
а склеить их один файл, в котором будет целое предложение:
"пятнадцать рублей пятьдесят копеек".
← →
Anatoly Podgoretsky (2003-10-30 17:21) [20]Вот это совсем другое объяснение, такое как должно быть
← →
Manulo (2003-10-30 17:22) [21]А если на те несколько миллисикунд тишину записать? Тогда глотнётся тишина и абонент услышит кодовую фразу
← →
Aristarh (2003-10-30 17:28) [22]>Manulo © (30.10.03 17:22) [21]
>А если на те несколько миллисикунд тишину записать?
Совершенно верно, именно так и я поступил вначале. Добавил в
начало каждого файла по 200 милисекунд тишины. Вроде сработало,
но предложения с задержками звучат некрасиво и неестественно,
поэтому пробую сейчас вариант со склеиванием нескольких файлов
в один. :)
← →
blackman (2003-10-30 17:29) [23]Вот это совсем другое объяснение, такое как должно быть и теперь совершенно непонятно откуда брать файлы и как их засунуть в телефонную линию :)
← →
Brahman (2003-10-30 17:37) [24]blackman © (30.10.03 16:55) [17]
Не надо мне объяснять про copy - я в курсе и давно.
Я говорю о том, что если через copy объединить два и более файлов *.wav, то воспроизведется только первый из них.
Желающие могут проверить.
← →
Brahman (2003-10-30 17:40) [25]Aristarh © (30.10.03 17:28) [22]
Вот это правильно, тем более, что ничего сложного в этом нет.
Только не copy:)
← →
Aristarh (2003-10-30 17:48) [26]>Brahman © (30.10.03 17:40) [25]
Что правильно, добавлять тишину? В этом случае восприятие
информации ужасное, когда слова в предложении разделены
заметными паузами.
← →
Brahman (2003-10-30 17:53) [27]Добавь шум:)
Без шуток.
А еще лучше прогонять очередной wav через элементарный задерживающий элемент на n-тактов и в окончание добавлять приглушенный задержанный сигнал очередного слова.
← →
blackman (2003-10-30 17:58) [28]>Желающие могут проверить.
Пугаешь ?
Конечно первый поскольку заголовок будет только первый :)
Формат wav здесь:
http://www.interdoc.by.ru/ext_w.htm
http://www.interdoc.by.ru/archive_a/avi_over.zip
← →
Brahman (2003-10-30 18:03) [29]blackman © (30.10.03 17:58) [28]
Спасибо, но формат wav помню почти наизусть.
Ну и зачем тогда увеличивать размер файла путем copy ? :)
← →
blackman (2003-10-30 18:12) [30]>Brahman
В первом измени длину и ... OK
← →
Aristarh (2003-10-30 18:15) [31]>Brahman © (30.10.03 17:53) [27]
>А еще лучше прогонять очередной wav через элементарный
>задерживающий элемент на n-тактов и в окончание добавлять
>приглушенный задержанный сигнал очередного слова.
В окончание нельзя добавлять сигнал очередного слова, т.к.
текст формируется динамически из произвольных отдельных слов.
Я привел в качестве примера "пятнадцать рублей пятьдесят копеек",
но он может быть каким угодно:
"пятьдесят рублей пятнадцать копеек"
"двадцать один рубль тридцать две копейки"
........ и т.д.
← →
Brahman (2003-10-30 18:21) [32]blackman © (30.10.03 18:12) [30]
См Brahman © (30.10.03 16:13) [12]
Aristarh © (30.10.03 18:15) [31]
Я имел в виду простейший ревербератор.
Есс-но добавлять надо от предыдущего слова.
← →
wicked (2003-10-30 20:11) [33]посоветую, об чем читать в MSDN:
mmioOpen / mmioClose
mmioDescend / mmioAscend
mmioRead / mmioWrite
mmioCreateChunk
а также, если форматы файлов разные (частоты дискретизации, количество каналов, биты на семпл), то советую приглядеться к
acmStreamOpen / acmStreamClose
acmStreamSize
acmStreamPrepareHeader / acmStreamUnprepareHeader
acmStreamConvert
API-шка там запутанная, но разобраться можно... если надо, дам рабочий пример, но он писан на билдере и заточен под memory mapped files...
← →
Aristarh (2003-10-30 22:48) [34]>wicked © (30.10.03 20:11) [33]
>а также, если форматы файлов разные (частоты дискретизации,
>количество каналов, биты на семпл)
Нет все файлы я привел к одному формату.
>если надо, дам рабочий пример, но он писан на билдере и заточен
>под memory mapped files...
Буду весьма признателен, с билдером тоже в ладах... :)
support@telenet.dn.ua
← →
Сергей Суровцев (2003-10-30 23:41) [35]>Aristarh © (30.10.03 17:05) [19]
>пятнадцать.wav
>рублей.wav
>пятьдесят.wav
>копеек.wav
Я себе это так живенько представил:
пятнадцать. Вав!
рублей. Вав!
пятьдесят. Вав!
копеек. Вав!
Программа для выколачивания денег :))
А можно еще любимый журналистский звук записать "Эээээээ" в начале и в конце каждого слова.
← →
Aristarh (2003-10-31 01:01) [36]>Сергей Суровцев © (30.10.03 23:41) [35]
>А можно еще любимый журналистский звук записать "Эээээээ" в
>начале и в конце каждого слова.
Возможно выход, серьезно рассмотрю этот вариант :))
Только начальную фразу "с вами говорит компьютер..." надо будет
заменить на "с вами говорит Константин Эрнст..."
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.009 c