Gloggy wrote:GoldenDict прекрасно понимает WAV файлы, которые лежат рядом с DSL словарем, или даже внутри ZIP архива
Да, если к этому ZIP-архиву адресуется какой-то словарь
Соответственно, нашёл паллиативное решение. Берётся каталог с набором WAV'ок, и на него натравливается некоторый batch-файл, вооружённый DictZip'ом (при желании можно обойтись и без него) и 7-Zip'ом (либо иным ZIP-архиватором). WAV'ки архивирует, по их именам строит простенький utf-8 файл .dsl и всё это скидывает в исходную папку. У меня он успешно обработал WAV'ки с пробелами в имени, а также файлы on.wav и off.wav
Желательно перед обработкой привести имена .wav к тому виду, который соответствует вероятной записи произносимого выражения в статьях других словарей - чтобы ссылка на такой самодельный словарик выдавалась в общую сводную карточку.
Единственная проблема - наличие нескольких вариантов произношения и, соответственно, файлы типа 'use.wav', 'use2.wav'... Чтобы поместить их все в одну словарную статью, не обойтись без нормальной программы, способной разбирать такие случаи, либо ручной правки результирующего .dsl (что несложно, т.к. файл utf-8 можно редактировать хоть в виндовом блокноте).
Если кому нужно, у меня он выглядит приблизительно так (изменены только пути)... три параметра: имя каталога, в котором находятся .wav файлы и куда будет скинут результат, имя словаря в кавычках - для отображения в GoldenDict, может быть длинной фразой с пробелами, название языка для заголовков. Например:
mk_wvdic.bat WordSet "A Couple of English Words" English
Сам текст команд таков (параметры WAVSDIR, ARCHDIR, DZIPDIR следует исправить соответственно истинному положению дел, имя и параметры вызова архиватора - тоже, если используется не 7z, а какой-то другой):
- Code: Select all
echo off
cls
set WAVSDIR=D:\Dicts\Audio\%1
set ARCHDIR="C:\Program Files\7-Zip"
set DZIPDIR=D:\Dicts\Tools\DictZip
rd /s /q tempwvls
mkdir tempwvls
set WORKDIR=%~dp0
set WORKDIR=%WORKDIR%tempwvls
cd %WAVSDIR%
%ARCHDIR%\7z.exe a -tzip %WAVSDIR%\%1.dsl.dz.files.zip *.wav -mx9
move /y *.wav %WORKDIR%
if exist %DZIPDIR%\%1.dsl del /f /q %DZIPDIR%\%1.dsl
chcp 866
echo я╗┐#NAME %2 >> %DZIPDIR%\%1.dsl
echo #INDEX_LANGUAGE "%3" >> %DZIPDIR%\%1.dsl
echo #CONTENTS_LANGUAGE "%3" >> %DZIPDIR%\%1.dsl
cd %WORKDIR%
ren *.wav *.
echo on
for %%i in (*) do (
echo:%%i >> %DZIPDIR%\%1.dsl
echo [s]%%i.wav[/s] >> %DZIPDIR%\%1.dsl
echo: >> %DZIPDIR%\%1.dsl
)
cd %DZIPDIR%
dictzip.exe %1.dsl
move %1.dsl.dz %WAVSDIR%\%1.dsl.dz
cd %~dp0
rd /s /q tempwvls