Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-78852
Andrey V.
2003-11-06 07:59
2003.11.24
Поле типа DATE и значение NULL


8-79066
my4ga
2003-07-29 10:59
2003.11.24
Озвучить текст


1-78918
SergP
2003-11-12 09:33
2003.11.24
TDatetime.


3-78774
kolumb
2003-11-05 14:31
2003.11.24
InterBase


1-78933
-=GaLaN=-
2003-11-12 20:22
2003.11.24
Колесико мышки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский