Конвертер SFL-TXT

[ English ] [ На русском ]

Введение

Эта программа была создана для того, чтобы помочь извлечь метки регионов звуковой дорожки из файлов SFL, созданных в программе Sound Forge, а затем импортировать их в файлы TXT, поддерживаемые программой Audacity*. Смысл этой задачи в следующем: мне довелось узнать о некоей лингвистической лаборатории, где лаборанты вынуждены использовать архаичную версию Sound Forge 4.5, чтобы размечать звуковые файлы с человеческой речью. Цель этой разметки для меня не вполне ясна, но выражаясь простым языком, делается это для изучения состава звукового потока речи (гласные, паузы и т.п.). Краткое исследование показало, что Audacity ничуть не хуже для этой задачи (а в чём-то и лучше), за исключением того обстоятельства, что файлов с разметкой уже накоплено огромное множество, и они в бинарном формате SFL, которого Audacity не разумеет. Натурально, будучи пингвинобоязненным линуксоидом, я решил взять на себя написание простого конвертера, который позволит тем несчастным восприять свободное программное обеспечение, вместо того, чтобы прозябать в плену у проприетарного.

Пример работы

SF 4.5 screenshot

Audacity screenshot

Свойства

На настоящий момент программа умеет как импортировать метки из файлов SFL (Sound Forge), TXT (Audacity) и SRT(SubRip), так и экспортировать их в оные. Поскольку Sound Forge использует частоту дискретизации для хранения временных атрибутов меток, пользователю нужно дополнительно указать частоту дискретизации размечаемого звукового файла (по умолчанию равна 22050 Гц, можно изменить в файле converter.h перед компиляцией). Поддержка SRT носит исключительно вспомогательный характер, так как SRT не поддерживает перекрывающиеся интервалы и требует сортировки меток в хронологическом порядке, что не имеет значения для остальных двух форматов. Впрочем, исходные файлы представляли собой транскрипцию звуковой дорожки от ТВ-сериала, и я решил оставить возможность создания файла субтитров. Кроме того, я подумал, что может быть удобным иметь возможность воспользоваться существующим файлом с субтитрами в качестве черновика разметки. Тем не менее, поддержка файлов SRT не является для программы первостепенной задачей, и, скорее всего, вам придётся прихорашивать результат преобразования в каком-нибудь специализированном редакторе субтитров, например в Gaupol.

Замечание о кодировке: конвертер работает с метками "как есть", не преобразуя кодировку. Таким образом, если кодировка исходного и целевого файла не совпадают, используйте программу вроде iconv для перекодировки файлов TXT или SRT. Пытаться конвертировать файлы SFL бесполезно.

Поскольку речь шла о версии Sound Forge 4.5, я не могу гарантировать приминимость конвертера к файлам SFL, созданным какой-либо другой версией Sound Forge, хотя и тешу себя надеждой, что формат файлов вряд ли поменяется. Под файлами SFL подразумеваются те файлы, которые получаются при сохранении списка регионов в отдельный файл SFL; если существуют ещё какие-то файлы SFL, то они, скорее всего, никак не связаны с обсуждаемой проблемой.

Программа написана в ОС Debian Lenny на архитектуре x86, на x86_64 не тестировалась.

Набросок описания формата SFL можно просмотреть здесь: sfl_description_ru.html

Скачать

Скачайте самую свежую версию архива с исходным кодом со странички "файлы" проекта:
https://sourceforge.net/projects/sfltxtconverter/files/

Справка

Текущую версию страницы руководства пользователя можно посмотреть здесь: sfl2txt.html

Использование

Для сборки конвертера наберите

$ make

в каталоге, куда был распакован исходный код.
Если хотите, можно установить программу в /usr/bin через

# make install

Впрочем, это не обязательно, программа будет работать откуда угодно.

Чтобы удалить программу, наберите:

# make uninstall

Чтобы применить программу, используйте синтаксис:

$ sfl2txt [-i <имя_исходного_файла>] [-o <имя_целевого_файла>] [-r <частота_дискретизации>] [-f <исходный_формат> [-t <целевой_формат>]

В зависимости от расширений имён файлов, конвертер произведёт соответствующее действие. Частота_дискретизации должна соответствовать частоте дискретизации вашего звукового файла, так как SFL использует её для хранения начала и длительности регионов. Значение по умолчанию — 22050 Гц, обусловлено историческими причинами. При указании неправильной частоты на выходе получится неправильное время. Пример использования:

$ sfl2txt -i samplefile.sfl -o samplefile.txt -r 44100

-- преобразует файл из SFL в TXT, приняв частоту дискретизации равной 44.1 КГц.

C версии 0.5, если не указывать опции -i или -о, программа будет читать данные со стандартного входа и писать на стандартный выход соответственно. В таком случае, используйте опции -f и -t, чтобы задать формат входного и выходного файла, если умолчания "из sfl" и "в txt" вас не устраивают. Форматы, заданные опциями -f и -t имеют приоритет над форматами, определенными по расширениям имён файлов, указанных в -i или -o.

$ sfl2txt -i ../sample.sfl | iconv -f cp1251

-- преобразует файл из SFL в TXT и перекодирует его из CP1251 в системную кодировку

Кроме того, опция -s позволяет задавать имя выходного файла автоматически, заменяя расширение входного на соответствующее (например, с 'sfl' на 'txt'). Если расширения нет, оно будет дописано. Конечно, в этом случае задавать направление преобразование нужно будет опциями -f и -t.

$ sfl2txt -i ../sample.sfl -s

-- сохранит вывод в файл '../sample.txt' (потому что настройки по умолчанию: из sfl в txt, 22050 Гц).

Условия использования

Эта программа покрывается лицензией GNU GPL v.3 или старше, полные условия см. в файле COPYING.


* — Строго говоря, формат файлов таков:
start_sec\tend_sec\tlabel_text
где start_sec и end_sec — дробное число секунд с точностью до 6-го знака после запятой.