73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from re import split, sub
|
|
from sys import argv
|
|
from os import getcwd
|
|
|
|
f = open(argv[1], "r")
|
|
|
|
stuff = list()
|
|
|
|
pagenum = 1
|
|
|
|
for line in f:
|
|
if line == "%d\n"%pagenum:
|
|
pagenum+=1
|
|
elif line.strip() != "":
|
|
stuff.append(line.strip()) # replace newlines with spaces
|
|
|
|
stuff = " ".join(stuff)
|
|
stuff = sub(r"(\d)\s(\d)", r"\1\2", stuff) # remove whitespaces between digits
|
|
stuff = stuff.replace("'", "'\"'\"'")
|
|
|
|
stuff = split(r"(».+?«)", stuff)
|
|
if len(stuff) == 1:
|
|
stuff = split(r"(„.+?“)", stuff[0])
|
|
if len(stuff) == 1:
|
|
stuff = split(r"(\".+?\")", stuff[0])
|
|
if len(stuff) == 1:
|
|
print "can't split"
|
|
exit(1)
|
|
|
|
processes = list()
|
|
|
|
tempdir="/dev/shm"
|
|
cwd=getcwd()
|
|
|
|
i = 0
|
|
for s in stuff:
|
|
s = s.strip(', ')
|
|
|
|
if len(s) == 0:
|
|
continue
|
|
|
|
if s.startswith('»') and s.endswith('«') or s.startswith('„') and s.endswith('“') or s.startswith('"') and s.endswith('"'):
|
|
print "wine sapi2wav.exe %s/%04d.wav 3 -t '%s'"%(tempdir, i, s)
|
|
else:
|
|
print "wine sapi2wav.exe %s/%04d.wav 2 -t '%s'"%(tempdir, i, s)
|
|
|
|
i+=1
|
|
print "ln -s %s/silence.wav %s/%04d.wav"%(cwd,tempdir,i)
|
|
i+=1
|
|
|
|
|
|
#python novel2audio.py novel.txt | ./parallel.sh
|
|
#./concatenate_wav.sh [0-9]*.wav | python stride.py | oggenc --quality 0 --raw --raw-bits 16 --raw-chan 1 --raw-rate 22050 - > out.ogg
|
|
#./concatenate_wav.sh [0-9]*.wav | python stride.py | sox --type raw --rate 22050 --encoding signed-integer --bits 16 --channels 1 - --rate 22050 --comment "" --compression 0 out.ogg tempo -s 2.0
|
|
|
|
# the stride of 2 is used because the bytes in the input wav
|
|
# files are of the form ABABCDCDEFEFGHGH
|
|
# since the input is 44100Hz, remove every 2nd byte tuple and output 22050Hz
|
|
# sox can also downsample but it easily converts
|
|
# 00000000 to 0100 or to FFFF
|
|
# using ./stride is also twice as fast as having sox do the downsampling
|
|
|
|
#sudo mount -o remount,size=1200M /dev/shm
|
|
#rm -rf /dev/shm/[0-9]*.wav
|
|
#for f in ../Perry\ Rhodan\ Ebook\ Sammlung\ Komplett/txt/Perry\ Rhodan\ -\ Romanzyklus\ -\ 0300-0399\ -\ M\ 87/<365-399>*; do
|
|
# cat "$f" | tr '»' '"' | tr '«' '"' | tr "'" '"' > /tmp/out
|
|
# python novel2audio.py "/tmp/out" | /usr/bin/time xargs --delimiter='\n' --max-args=1 --max-procs=4 -I '{}' sh -c '{} > /dev/null'
|
|
# ./concatenate_wav /dev/shm/[0-9]*.wav | ./stride | sox --show-progress --type raw --rate 22050 --encoding signed-integer --bits 16 --channels 1 - --rate 22050 --comment "" --compression 0 "`basename \"$f\" .txt`.ogg" tempo -s 2.0
|
|
# rm /dev/shm/[0-9]*.wav
|
|
#done
|