blind vic
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Для желающих выдрать звук из файлов sound*.dat из Лингво: Цитата: #!/usr/bin/env python import sys, struct, subprocess, math def GetNext(FH, NumBytes, StopByte=""): result=""; while 1: Byte=FH.read(1) if StopByte != "" and Byte == StopByte: break result += Byte if len(result) >= NumBytes: break return result def ExtractPhrase(Filename, B, E): print "Filename: %s" % Filename print "Begin time, sec.: %.2f" % B print "End time, sec.: %.2f" % E cmd = "mp3splt.exe SoundE1.ogg %d.%02d.%02d %d.%02d.%02d -n -d out -o %s" % \ (math.floor(B/60), math.floor(math.fmod(B,60)), (B-math.floor(B))*100, \ math.floor(E/60), math.floor(math.fmod(E,60)), (E-math.floor(E))*100, Filename.replace(" ", "_")) print "Command: %s\n" % cmd subprocess.call(cmd, False) def main(): infile="SoundE.dat" try: FH = open(infile, 'rb') except IOError, eStr: print "ERROR: Cannot open ", infile, " for reading: ", eStr sys.exit() Header = GetNext(FH, 9, "\xFF") print "Header: %s" % repr(Header) NumPhrases = struct.unpack("L", GetNext(FH, 4))[0] print "Number of phrases: %i\n" % (NumPhrases) Filename = unicode(GetNext(FH, 150, "\x0D"), "utf-16") GetNext(FH, 5, "\xFF") Duration = struct.unpack("L", GetNext(FH, 4))[0]/48000.0 ExtractPhrase(Filename, 0, Duration) NumPhrases -= 1 while NumPhrases > 0: print "Processing phrase # %i" % NumPhrases Filename = unicode(GetNext(FH, 150, "\x0D"), "utf-16") GetNext(FH, 5, "\xFF") Start = struct.unpack("L", GetNext(FH, 4))[0]/48000.0 GetNext(FH, 1) Duration = struct.unpack("L", GetNext(FH, 4))[0]/48000.0 ExtractPhrase(Filename, Start, Start+Duration) NumPhrases -= 1 if __name__ == '__main__': main() | Это основной скрипт. Вам понадобятся Питон (есть в составе ОпенОффис), mp3splt.exe (http://mp3wrap.sourceforge.net), и хекс редактор (например XVI32). Есть, конечно такая программа Lingvo_SoundExtractor.exe, довольно удобная, но звук приходится после распаковки перекодировать обратно. Т.е. теряется качество, хотя это не так уж важно. Тем не менее, написал свою программу. Вроде работает, выдрал звук из SoundE.dat из Lingvo 12 (15274 файлов). Правда в распакованном виде те же звуки занимают почти в два раза больше места (видимо из-за добавляемых заголовков). Эти файлы как-нибудь, когда-нибудь надеюсь прикрутить к переделанным под Стардикт словарям Лингво. Как я понял, сейчас эта фича еще не доступна (чтобы была ссылка, при клике на к-ю проигрывался бы звук). Потестите, кому надо. Может кто улучшит... | Всего записей: 2 | Зарегистр. 07-12-2005 | Отправлено: 23:32 17-09-2007 | Исправлено: blind vic, 23:36 17-09-2007 |
|