Talsyntes:____"För Folk I Tiden"
Kategoriregler
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Jag har också talat vidare högskolor och företag inte Talsyntes,
men efter som informationen innehåller namn som jag inte
bör ta upp här så får det det på personliga "rutan".
Jag är fortfarande hoppfull även om det kommer att
kräva en "insatts" att få del av en "bra och endamåls enlig"
röst.
men efter som informationen innehåller namn som jag inte
bör ta upp här så får det det på personliga "rutan".
Jag är fortfarande hoppfull även om det kommer att
kräva en "insatts" att få del av en "bra och endamåls enlig"
röst.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Här är en test-version av r9 med enda skillnaden att den talar om exakt vilket uppläsnings-kommando den faktiskt försöker köra så att vi kan se om det ser rätt ut.
Kod: Markera allt
#!/bin/bash
# r9-test1
case "$-" in *i*) return ;; esac
export LC_ALL=C
#exec 2>&-
APP="Talsyntes"
DIR=~/".talsyntes"
SCRIPT="$DIR/talsyntes.sh"
DATA_DIR="$DIR/data"
VOICES_DIR="$DIR/voices"
SETTINGS_DIR="$DIR/settings"
mkdir -p "$DATA_DIR" "$VOICES_DIR" "$SETTINGS_DIR"
if test "x$SCRIPT" != "x$0" && cp -f "$0" "$SCRIPT" 2>&-
then
iconv -f utf-8 -t iso8859-1 "$0" >/dev/null 2>&- ||
iconv -f iso8859-1 -t utf-8 "$0" >"$SCRIPT"
chmod +x "$SCRIPT" && exec "$SCRIPT" "$@"
fi
get_dialog() {
cat "$SETTINGS_DIR"/dialog 2>&- ||
which zenity 2>&- ||
which Xdialog 2>&- ||
echo "$0: missing zenity or Xdialog" >&2
}
case "$1" in
stop|start)
pkill -P $(pgrep -u"$(id -u)" -d, "${SCRIPT##*/}") mplayer
;;
pause)
find "$DIR" -name mplayer.\*.fifo -type p -exec sh -c 'echo pause >{}' \;
;;
list)
dialog="$(get_dialog)"
ps -opid=,ppid=,args= $(pgrep -u"$(id -u)" "${SCRIPT##*/}") |
grep -vE "(^|[[:blank:]]+)$$([[:blank:]]+|$)" | grep "$*$" |
while read pid
do pkill -P "${pid%% *}" "${dialog##*/}"
done
;;
*)
ps -opid=,ppid=,args= $(pgrep -u"$(id -u)" "${SCRIPT##*/}") |
grep -vE "(^|[[:blank:]]+)$$([[:blank:]]+|$)" |
grep -q "$*$" && exit
;;
esac
create_dialog() {
dialog="$(get_dialog)"
case "$1" in
list)
type="$2"
title="$3"
while read item
do echo "$item" | grep -qE "($4)" && default=true || default=false
case "$dialog" in
*zenity)
set "$@" "$default" "${item##*/}"
;;
*Xdialog)
set "$@" "${item##*/}" "${item##*/}"
"$default" && set "$@" on || set "$@" off
;;
esac
done
shift 4
case "$dialog" in
*zenity)
set -- --width 400 --height 400 --list \
--"$type"list --text "$title" --column "" --column "" "$@"
;;
*Xdialog)
set -- --stdout --separator "|" --no-tags \
--"$type"list "$title" 400x400 0 "$@"
;;
esac
;;
scale)
case "$dialog" in
*zenity)
set -- --scale --text "$2" --print-partial \
--min-value -100 --max-value 100 --value "$3"
;;
*Xdialog)
set -- --stdout --rangebox "$2" 10 60 -100 100 "$3"
;;
esac
;;
progress)
case "$dialog" in
*zenity)
set -- --width 300 --progress --auto-close --text "$2"
;;
*Xdialog)
set -- --stdout --gauge "$2" 5 60
;;
esac
;;
question)
case "$dialog" in
*zenity)
set -- --question --text "$2"
;;
*Xdialog)
set -- --stdout --yesno "$2" 10 60
;;
esac
;;
info)
case "$dialog" in
*zenity)
set -- --info --no-wrap --text "$2"
;;
*Xdialog)
set -- --stdout --fixed-font --msgbox "$2" 0 0
;;
esac
;;
*) return ;;
esac
LC_ALL=sv_SE.UTF-8 "${dialog:-:}" --title "$APP" "$@"
}
metacity_info() {
echo '
KEY="/apps/metacity/global_keybindings"
CMD="/apps/metacity/keybinding_commands"
PREFIX="run_command_"
SUFFIX=""
'
}
compiz_info() {
echo '
KEY="/apps/compiz/general/allscreens/options"
CMD="/apps/compiz/general/allscreens/options"
PREFIX="run_command"
SUFFIX="_key"
'
}
scale_mapping() {
mawk -vmin="$1" -vdef="$2" -vmax="$3" -vbend="${4:-1}" '
function f(x)
{
factor = (a != b) ? 2*a*b*log(a/b)/(a-b) : (a+b)
return factor * log(x) * x / (x^2-1) - ((a < b) ? a : b) / bend
}
BEGIN {
a = (max - def)
b = (def - min)
if (max < min) { a = -a; b = -b; }
x0=2; x1=3; y0=f(x0); y1=f(x1); lim=1e-4
while( x1>1 && ( (x1-x0)>lim || (x0-x1)>lim) ) {
y1 = f(x1); x2 = x1 - (x1 - x0) * y1 / (y1 - y0)
x0 = x1; x1 = x2; y0 = y1;
}
incl = (x1>1) ? x1 : 1
}
{
expo = $1 / 100
if (incl != 1) expo = (incl^expo - 1/incl^expo) / (incl - 1/incl)
expo = (expo + 1) / 2
if (a != b) expo = ((a / b)^(2 * expo) - 1) / ((a / b)^2 - 1)
printf("%f\n", min + (max - min) * expo)
}
'
}
get_speed() {
2>&- scale_mapping 5 1 0.2 <"$SETTINGS_DIR"/speed || echo 1.0
}
get_freq() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/freq || echo 1.0
}
get_volume() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/volume || echo 1.0
}
get_rate() {
2>&- scale_mapping 1000 16000 48000 <"$SETTINGS_DIR"/rate || echo 16000
}
get_scale() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/scale || echo 1.0
}
get_stride() {
2>&- scale_mapping 1 60 400 <"$SETTINGS_DIR"/stride || echo 60
}
get_overlap() {
2>&- scale_mapping 0 0.2 1 <"$SETTINGS_DIR"/overlap || echo 0.2
}
get_search() {
2>&- scale_mapping 0 14 200 <"$SETTINGS_DIR"/search || echo 14
}
get_method() {
2>&- cat "$SETTINGS_DIR"/method || echo tempo
}
get_accel() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/accel || echo 1.0
}
get_voice() {
2>&- readlink "$SETTINGS_DIR"/voice
}
find -L "$SETTINGS_DIR" -maxdepth 1 -name voice -type l -exec rm {} \;
ls "$VOICES_DIR"/[a-z][a-z][1-9]:* >/dev/null 2>&- &&
test -x "$SCRIPT" &&
test -x "$DIR/mbrola" ||
set install
cd "$DIR"
case "$1" in
stop|pause)
;;
loop)
while "$SCRIPT" start ; do :; done
;;
start)
#xclip -o | grep -q . || exit
test -h "$SETTINGS_DIR/voice" || exec "$SCRIPT" adjust voice
find "$DIR" -name mplayer.\*.fifo -type p -exec rm -f {} \;
FIFO="$DIR/mplayer.$$.fifo"
trap 'rm -f "$FIFO"' EXIT
test -p "$FIFO" || mkfifo "$FIFO"
if voice=$(ls "$VOICES_DIR/$2":* 2>&-)
then shift
else voice="$(get_voice)"
fi
voice="${voice##*/}"
speed="$(get_speed)"
freq="$(get_freq)"
volume="$(get_volume)"
rate="$(get_rate)"
scale="$(get_scale)"
stride="$(get_stride)"
overlap="$(get_overlap)"
search="$(get_search)"
method="$(get_method)"
accel="$(get_accel)"
scaletempo="$scaletempo${scaletempo+:}scale=${scale:-1}"
scaletempo="$scaletempo${scaletempo+:}stride=${stride:-60}"
scaletempo="$scaletempo${scaletempo+:}overlap=${overlap:-0.20}"
scaletempo="$scaletempo${scaletempo+:}search=${search:-14}"
scaletempo="$scaletempo${scaletempo+:}speed=${method:-tempo}"
scaletempo="-af scaletempo=$scaletempo -speed ${accel:-1}"
echo xclip -o \|
echo espeak -v mb-\""${voice%:*}"\" \|
echo ' ' \""$DIR/mbrola"\" -e \\
echo ' ' -t \""${speed:-1}"\" \\
echo ' ' -f \""${freq:-1}"\" \\
echo ' ' -v \""${volume:-1}"\" \\
echo ' ' -l \""${rate:-16000}"\" \\
echo ' ' \""$VOICES_DIR/$voice"\" - -.wav \|
echo ' ' mplayer -really-quiet -input file=\""$FIFO"\" $scaletempo -demuxer audio -
xclip -o |
espeak -v mb-"${voice%:*}" |
"$DIR/mbrola" -e \
-t "${speed:-1}" \
-f "${freq:-1}" \
-v "${volume:-1}" \
-l "${rate:-16000}" \
"$VOICES_DIR/$voice" - -.wav |
mplayer -really-quiet -input file="$FIFO" $scaletempo -demuxer audio -
;;
list)
cd "$SETTINGS_DIR"
list=$(
echo "Nuvarande inställningar"
echo
for option in \
voice speed freq rate volume accel \
scale stride overlap search method dialog
do if test -h "$option"
then
setting=$(readlink "$option")
setting="${setting##*/}" && value=""
else
setting="$(cat $option 2>&-)"
value="$(get_$option)"
fi
test "$option" = dialog &&
setting="${value##*/}" && value=""
test "$option" = method &&
setting="${setting:-tempo}" && value=""
printf "%s:\t\t%s\t\t%s\n" \
"$option" "${setting:-0}" "${value:+(}$value${value:+)}"
done #| sort
)
create_dialog question "$list"
exit
;;
reset)
cd "$SETTINGS_DIR"
case "$2" in
'')
create_dialog question "Återställ standardinställningarna?" || exit
rm -f \
dialog speed freq volume rate scale stride overlap search method accel
;;
dialog|speed|freq|volume|rate|scale|stride|overlap|search|method|accel)
rm -f "$2"
;;
esac
;;
adjust)
case "$2" in '')
set "$1" $(
printf "%s\n" speed freq volume rate \
scale stride overlap search method accel voice dialog |
create_dialog list radio "Välj inställning" speed
)
test $# -gt 1 && exec "$SCRIPT" "$@" || exit
esac
value=$(cat "$SETTINGS_DIR/$2" 2>&-)
case "$2" in
voice)
case "$3" in
'')
voice=$(readlink "$SETTINGS_DIR"/voice)
voice=$(
ls "$VOICES_DIR"/[a-z][a-z][1-9]:* 2>&- |
create_dialog list radio "Välj röst" "^${voice#../}$"
) && test -n "$voice" && voice="$VOICES_DIR/$voice"
;;
*)
voice=$(ls "$VOICES_DIR/$3":* 2>&-)
;;
esac &&
ln -sf "$voice" "$SETTINGS_DIR"/voice
exit
;;
dialog)
case "$3" in
'')
value=$(
which zenity Xdialog 2>&- |
create_dialog list radio "Välj dialogrutesystem" "${value:-zenity}"
) && echo "$value" >"$SETTINGS_DIR/$2"
;;
zenity|Xdialog)
echo "$3" >"$SETTINGS_DIR/$2"
;;
esac
exit
;;
speed) title="Uppläsningshastighet" ;;
freq) title="Röstläge" ;;
volume) title="Uppläsningsvolym" ;;
rate) title="Rösttäthet" ;;
scale|stride|overlap|search|accel) title="scaletempo: $2" ;;
method)
case "$3" in
'')
value=$(
printf "%s\n" tempo pitch both none |
create_dialog list radio "scaletempo: $2" "${value:-tempo}"
) && echo "$value" >"$SETTINGS_DIR/$2"
;;
tempo|pitch|both|none)
echo "$3" >"$SETTINGS_DIR/$2"
;;
esac
exit
;;
*) exit
;;
esac
case "$3" in
'')
{ create_dialog scale "$title" "${value:-0}" || echo "$value"; } |
while read value
do test -n "$value" && echo "$value" >"$SETTINGS_DIR/$2"
done
;;
*)
echo "$3" |
awk -vvalue="$value" '{
value = ($1) ? value + $1 : 0
value = (value < 100) ? value : 100
value = (value > -100) ? value : -100
print(value)
}' >"$SETTINGS_DIR/$2"
;;
esac
;;
install)
URL="http://tcts.fpms.ac.be/synthesis/mbrola"
TMP=$(mktemp)
trap 'rm -f "$TMP"' EXIT
wget -qO- "$URL"/mbrcopybin.html |
sed -n '
s|.*"\(bin/[^"]*.zip\)"[^>]*>[^<]*LINUX i386.*|\1 (0.3Mb)|p
s|.*"\(dba/[^/]*/[^"]*\)"[^>]*>\([^:]*:\s*[^<]*\).*|\1\t\2|p
' >"$TMP"
voices=$(
cd /usr/share/espeak-data/voices/mb &&
echo mb-[a-z][a-z][1-9] |
sed 's/mb-//g;s/\(.\)\s\(.\)/\1|\2/g'
)
voices=$(
grep -E "/($voices)/" <"$TMP" | cut -f2 |
create_dialog list check "Välj språk" '^(sw|us|en)[[:digit:]]:' |
sed 's/:[^|]*//g'
)
test -n "$voices" || exit
rm -f "$VOICES_DIR"/[a-z][a-z][1-9]:* 2>&-
cd "$DATA_DIR"
grep -E "(^bin|/$voices/)" <"$TMP" |
awk '{
size[NR]=size[NR-1]+substr($NF,2,length($NF)-4)
$NF=""
voice[NR]=$0
} END {
for(i=1; i<=NR; i++) {
print(100*size[i]/size[NR],voice[i])
}
}' |
while read progress file voice
do test -f "${file##*/}" ||
wget -q "$URL/$file" 2>&1
if test -z "$voice"
then
unzip -p "${file##*/}" mbrola-linux-i386 >"$DIR"/mbrola
chmod +x "$DIR"/mbrola
else
unzip -p "${file##*/}" "${voice%%:*}" >"$VOICES_DIR/$voice" 2>&- ||
unzip -p "${file##*/}" "${voice%%:*}/${voice%%:*}" \
>"$VOICES_DIR/$voice"
fi
echo $progress
done |
create_dialog progress "Hämtar Röster..."
bind_key() {
eval $("$1"_info)
gconftool-2 -a "$KEY" |
awk '$1~/^'"$PREFIX"'[0-9]+'"$SUFFIX"'$/ && $3~/^'"$2"'$/{print($1)}' |
while read binding
do gconftool-2 -u "$KEY/$binding"
done
ID=$(
gconftool-2 -a "$KEY" |
sed -n "s/^\s*$PREFIX\([0-9]\+\)$SUFFIX\s*=\s*/\1\t/p" |
sort -n |
awk '{if($1-prev>1)exit;prev=$1}END{print(prev+1)}'
)
gconftool-2 \
-s -t str "$KEY/$PREFIX${ID:-1}$SUFFIX" "$2" \
-s -t str "$CMD/${PREFIX#run_}${ID:-1}" "$3"
}
for wm in metacity compiz ; do
bind_key "$wm" "F1" "$SCRIPT stop"
bind_key "$wm" "F2" "$SCRIPT pause"
bind_key "$wm" "F3" "$SCRIPT start"
bind_key "$wm" "F4" "$SCRIPT loop"
bind_key "$wm" "F5" "$SCRIPT adjust"
bind_key "$wm" "F6" "$SCRIPT list"
bind_key "$wm" "F7" "$SCRIPT reset"
bind_key "$wm" "F8" "$SCRIPT uninstall"
bind_key "$wm" "F9" "$SCRIPT install"
bind_key "$wm" "<Control>F1" "$SCRIPT voice"
bind_key "$wm" "<Control>F2" "$SCRIPT speed"
bind_key "$wm" "<Control>F3" "$SCRIPT freq"
bind_key "$wm" "<Control>F4" "$SCRIPT rate"
bind_key "$wm" "<Control>F5" "$SCRIPT volume"
bind_key "$wm" "<Control>F6" "$SCRIPT accel"
bind_key "$wm" "<Control>F7" "$SCRIPT scale"
bind_key "$wm" "<Control>F8" "$SCRIPT stride"
bind_key "$wm" "<Control>F9" "$SCRIPT overlap"
bind_key "$wm" "<Control>F10" "$SCRIPT search"
bind_key "$wm" "<Control>F11" "$SCRIPT method"
bind_key "$wm" "<Control>F12" "$SCRIPT dialog"
done
create_dialog info "$APP installerad"
exec "$SCRIPT" voice
;;
uninstall)
create_dialog question "Avinstallera $APP?" || exit
unbind_keys() {
eval $("$1"_info)
gconftool-2 -a "$CMD" |
grep -F "$SCRIPT" |
sed -n 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/p' |
while read binding
do gconftool-2 -u "$CMD/${PREFIX#run_}$binding"
gconftool-2 -u "$KEY/$PREFIX$binding$SUFFIX"
done
}
unbind_keys metacity
unbind_keys compiz
rm -rf "$DIR"
create_dialog info "$APP avinstallerad"
;;
voice|dialog|speed|freq|volume|rate|scale|stride|overlap|search|method|accel)
exec "$SCRIPT" adjust "$@"
;;
*)
exec "$SCRIPT" start "$@"
;;
esac
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Så nu ska jag göra om testerna via terminal igen?
Filen är installerad och "grundtestad". mao samma egenskaper som tidigare.
Filen är installerad och "grundtestad". mao samma egenskaper som tidigare.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Det är såklart samma egenskaper som tidigare... enda skillnaden är att den ska tala om vilket uppläsningskommando den försöker använda (som uppenbarligen inte fungerar). Du måste starta från en terminal för att se meddelandet:Hans Linde skrev:Så nu ska jag göra om testerna via terminal igen?
Filen är installerad och "grundtestad". mao samma egenskaper som tidigare.
Kod: Markera allt
~/bin/talsyntes.sh start
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Hmmm..inte mera.
Ja då har jag överarbetat lite, men testen du bad om finns längst ner på terminal utskriften.
Som du förväntat dig är allt igenom samma uppförande.
i386c@i386c-ubuntu:~$ zenity --scale --print-partial
50
50
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ zenity --scale --print-partial | while read i; do echo $i; done
64
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ { zenity --scale --print-partial || echo nej; } | while read i; do echo $i; done
47
nej
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ { zenity --scale --print-partial || echo nej; } |
> while read i
> do test -n "$i" && echo $i >>/tmp/test.txt
> done
i386c@i386c-ubuntu:~$ cat /tmp/test.txt
18
29
50
50
17
67
nej
2
9
28
73
nej
49
49
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh reset
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ls -l ~/.talsyntes/settings
totalt 4
-rw-r--r-- 1 i386c i386c 2 2008-10-16 18:40 accel
lrwxrwxrwx 1 i386c i386c 49 2008-10-16 18:26 voice -> /home/i386c/.talsyntes/voices/sw2: Swedish Female
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ cat ~/.talsyntes/settings/accel
0
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ rm ~/.talsyntes/settings/accel
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh reset
i386c@i386c-ubuntu:~$ echo 42 > ~/.talsyntes/settings/accel
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.16044.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
Ja då har jag överarbetat lite, men testen du bad om finns längst ner på terminal utskriften.
Som du förväntat dig är allt igenom samma uppförande.
i386c@i386c-ubuntu:~$ zenity --scale --print-partial
50
50
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ zenity --scale --print-partial | while read i; do echo $i; done
64
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ { zenity --scale --print-partial || echo nej; } | while read i; do echo $i; done
47
nej
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ { zenity --scale --print-partial || echo nej; } |
> while read i
> do test -n "$i" && echo $i >>/tmp/test.txt
> done
i386c@i386c-ubuntu:~$ cat /tmp/test.txt
18
29
50
50
17
67
nej
2
9
28
73
nej
49
49
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh reset
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ls -l ~/.talsyntes/settings
totalt 4
-rw-r--r-- 1 i386c i386c 2 2008-10-16 18:40 accel
lrwxrwxrwx 1 i386c i386c 49 2008-10-16 18:26 voice -> /home/i386c/.talsyntes/voices/sw2: Swedish Female
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ cat ~/.talsyntes/settings/accel
0
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ rm ~/.talsyntes/settings/accel
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh reset
i386c@i386c-ubuntu:~$ echo 42 > ~/.talsyntes/settings/accel
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.16044.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Körde du det när det var i "låst" läge? För som det ser ut där så har den använt standardvärdena, vilket inte har låst saker tidigare...Hans Linde skrev:i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.16044.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Tror jag inte det.
Det första är "ej låst",
sedan "låst".
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.16175.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.19845.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 3.410780 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll
i386c@i386c-ubuntu:~$
Det första är "ej låst",
sedan "låst".
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.16175.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.19845.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 3.410780 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll
i386c@i386c-ubuntu:~$
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Nu ser jag vad felet är, men jag har ännu inte kommit fram till varför det blir så. Testa gärna med något annat som "låser" än accel så att jag kan bekräfta mina misstankar.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Och när du ändå håller på så kan det vara bra om du även ändrar på något värde som inte "låser", t.ex volume.
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
1) ingen röst ingen låsning.
2) ingen röst, låst pga markören slät justeringslisten.
3) ingen röst, låst pga ovan, och kvitterat med "OK" för att fönstret ska bort.
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.20211.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.23914.fifo" -af scaletempo=scale=1.360936 1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.23952.fifo" -af scaletempo=scale=1.360936 1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll
i386c@i386c-ubuntu:~$
2) ingen röst, låst pga markören slät justeringslisten.
3) ingen röst, låst pga ovan, och kvitterat med "OK" för att fönstret ska bort.
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.20211.fifo" -af scaletempo=scale=1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.23914.fifo" -af scaletempo=scale=1.360936 1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-"sw2" |
"/home/i386c/.talsyntes/mbrola" -e \
-t "1.0" \
-f "1.0" \
-v "1.0" \
-l "16000" \
"/home/i386c/.talsyntes/voices/sw2: Swedish Female" - -.wav |
mplayer -really-quiet -input file="/home/i386c/.talsyntes/mplayer.23952.fifo" -af scaletempo=scale=1.360936 1.0:stride=60:overlap=0.2:search=14:speed=tempo -speed 1.0 -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Win32 LoadLibrary failed to load: avisynth.dll, /usr/lib/win32/avisynth.dll, /usr/local/lib/win32/avisynth.dll
i386c@i386c-ubuntu:~$
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Den låser inte med "volume"
Den här är låst med "scale".
Den här är låst med "scale".
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Jo, jag ser att den är låst med scale. Av någon anledning så kommer värdet följt av standardvärdet...Hans Linde skrev:Den låser inte med "volume"
Den här är låst med "scale".
"scale=1.360936 1.0:"
Det borde bara vara 1.360936, men det kommer en extra "1.0" på släptåg, vilket orsakar låsningen. Det jag undrar nu är om även t.ex. volume får med standardvärdet på släp, eller om den inte får det.
Jag misstänker att omskalningsfunktionen ger något fel hos dig. Frågan är om den ens ger rätt värden? Ställ in accel till 42 och kolla med list så att det verkliga värdet blir ungefär 1.47
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Ursäkta att det dröjer, men något nytt fel har dykt upp.
Eftersom det eventuellt kan ha ett samband, med det vi försöker "fånga" så gör jag inte uninstall eller annat.
Det nykommna felet är att "loop" inte vill gå igång.
Det hjälper inte med "reset" längre.
Rösten läser markerad textsträng med "start".
Vad vill du att jag ska göra?
Eftersom det eventuellt kan ha ett samband, med det vi försöker "fånga" så gör jag inte uninstall eller annat.
Det nykommna felet är att "loop" inte vill gå igång.
Det hjälper inte med "reset" längre.
Rösten läser markerad textsträng med "start".
Vad vill du att jag ska göra?
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Det här blinkningen som allt sker vid inläsning, inträffar men ingen ljud.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Jag kan inte förstå varför loop inte fungerar om start gör det.Hans Linde skrev:Ursäkta att det dröjer, men något nytt fel har dykt upp.
Eftersom det eventuellt kan ha ett samband, med det vi försöker "fånga" så gör jag inte uninstall eller annat.
Det nykommna felet är att "loop" inte vill gå igång.
Det hjälper inte med "reset" längre.
Rösten läser markerad textsträng med "start".
Vad vill du att jag ska göra?
Jag vill fortfarande att du ska kolla så att accel-skalan på 42 ger det verkliga värdet 1.47, för om det stämmer så har jag en buggfix redo. Annars så måste vi testa mer.
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Ja tillslut fick jag till det.
Du får med det andra också...
i386c@i386c-ubuntu:~$ ls -l ~/.talsyntes/settings
totalt 4
-rw-r--r-- 1 i386c i386c 3 2008-10-16 20:15 accel
lrwxrwxrwx 1 i386c i386c 47 2008-10-16 19:58 voice -> /home/i386c/.talsyntes/voices/sw1: Swedish Male
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ cat ~/.talsyntes/settings/accel
42
i386c@i386c-ubuntu:~$
Se du det önskade, eller peta vad jag borde göra...
Du får med det andra också...
i386c@i386c-ubuntu:~$ ls -l ~/.talsyntes/settings
totalt 4
-rw-r--r-- 1 i386c i386c 3 2008-10-16 20:15 accel
lrwxrwxrwx 1 i386c i386c 47 2008-10-16 19:58 voice -> /home/i386c/.talsyntes/voices/sw1: Swedish Male
i386c@i386c-ubuntu:~$
i386c@i386c-ubuntu:~$ cat ~/.talsyntes/settings/accel
42
i386c@i386c-ubuntu:~$
Se du det önskade, eller peta vad jag borde göra...
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Tillslut fallaer myntet ner...
Nuvarande inställningar
voice: sw1: Swedish Male
speed: 0 (1.0)
freq: 0 (1.0)
rate: 0 (16000)
volume: 0 (1.0)
accel: 42 (1.470076
1.0)
scale: 0 (1.0)
stride: 0 (60)
overlap: 0 (0.2)
search: 0 (14)
method: tempo
dialog: zenity
Nuvarande inställningar
voice: sw1: Swedish Male
speed: 0 (1.0)
freq: 0 (1.0)
rate: 0 (16000)
volume: 0 (1.0)
accel: 42 (1.470076
1.0)
scale: 0 (1.0)
stride: 0 (60)
overlap: 0 (0.2)
search: 0 (14)
method: tempo
dialog: zenity
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Talsyntes: var finns programmen?
Perfekt... då har ju en r10 som förhoppningsvis fixar problemet:Hans Linde skrev:Tillslut fallaer myntet ner...
Kod: Markera allt
#!/bin/bash
# r10
case "$-" in *i*) return ;; esac
export LC_ALL=C
#exec 2>&-
APP="Talsyntes"
DIR=~/".talsyntes"
SCRIPT="$DIR/talsyntes.sh"
DATA_DIR="$DIR/data"
VOICES_DIR="$DIR/voices"
SETTINGS_DIR="$DIR/settings"
mkdir -p "$DATA_DIR" "$VOICES_DIR" "$SETTINGS_DIR"
if test "x$SCRIPT" != "x$0" && cp -f "$0" "$SCRIPT" 2>&-
then
iconv -f utf-8 -t iso8859-1 "$0" >/dev/null 2>&- ||
iconv -f iso8859-1 -t utf-8 "$0" >"$SCRIPT"
chmod +x "$SCRIPT" && exec "$SCRIPT" "$@"
fi
get_dialog() {
cat "$SETTINGS_DIR"/dialog 2>&- ||
which zenity 2>&- ||
which Xdialog 2>&- ||
echo "$0: missing zenity or Xdialog" >&2
}
case "$1" in
stop|start)
pkill -P $(pgrep -u"$(id -u)" -d, "${SCRIPT##*/}") mplayer
;;
pause)
find "$DIR" -name mplayer.\*.fifo -type p -exec sh -c 'echo pause >{}' \;
;;
list)
dialog="$(get_dialog)"
ps -opid=,ppid=,args= $(pgrep -u"$(id -u)" "${SCRIPT##*/}") |
grep -vE "(^|[[:blank:]]+)$$([[:blank:]]+|$)" | grep "$*$" |
while read pid
do pkill -P "${pid%% *}" "${dialog##*/}"
done
;;
*)
ps -opid=,ppid=,args= $(pgrep -u"$(id -u)" "${SCRIPT##*/}") |
grep -vE "(^|[[:blank:]]+)$$([[:blank:]]+|$)" |
grep -q "$*$" && exit
;;
esac
create_dialog() {
dialog="$(get_dialog)"
case "$1" in
list)
type="$2"
title="$3"
while read item
do echo "$item" | grep -qE "($4)" && default=true || default=false
case "$dialog" in
*zenity)
set "$@" "$default" "${item##*/}"
;;
*Xdialog)
set "$@" "${item##*/}" "${item##*/}"
"$default" && set "$@" on || set "$@" off
;;
esac
done
shift 4
case "$dialog" in
*zenity)
set -- --width 400 --height 400 --list \
--"$type"list --text "$title" --column "" --column "" "$@"
;;
*Xdialog)
set -- --stdout --separator "|" --no-tags \
--"$type"list "$title" 400x400 0 "$@"
;;
esac
;;
scale)
case "$dialog" in
*zenity)
set -- --scale --text "$2" --print-partial \
--min-value -100 --max-value 100 --value "$3"
;;
*Xdialog)
set -- --stdout --rangebox "$2" 10 60 -100 100 "$3"
;;
esac
;;
progress)
case "$dialog" in
*zenity)
set -- --width 300 --progress --auto-close --text "$2"
;;
*Xdialog)
set -- --stdout --gauge "$2" 5 60
;;
esac
;;
question)
case "$dialog" in
*zenity)
set -- --question --text "$2"
;;
*Xdialog)
set -- --stdout --yesno "$2" 10 60
;;
esac
;;
info)
case "$dialog" in
*zenity)
set -- --info --no-wrap --text "$2"
;;
*Xdialog)
set -- --stdout --fixed-font --msgbox "$2" 0 0
;;
esac
;;
*) return ;;
esac
LC_ALL=sv_SE.UTF-8 "${dialog:-:}" --title "$APP" "$@"
}
metacity_info() {
echo '
KEY="/apps/metacity/global_keybindings"
CMD="/apps/metacity/keybinding_commands"
PREFIX="run_command_"
SUFFIX=""
'
}
compiz_info() {
echo '
KEY="/apps/compiz/general/allscreens/options"
CMD="/apps/compiz/general/allscreens/options"
PREFIX="run_command"
SUFFIX="_key"
'
}
scale_mapping() {
awk -vmin="$1" -vdef="$2" -vmax="$3" -vbend="${4:-1}" '
function f(x)
{
factor = (a != b) ? 2*a*b*log(a/b)/(a-b) : (a+b)
return factor * log(x) * x / (x^2-1) - ((a < b) ? a : b) / bend
}
BEGIN {
a = (max - def)
b = (def - min)
if (max < min) { a = -a; b = -b; }
x0=2; x1=3; y0=f(x0); y1=f(x1); lim=1e-4
while( x1>1 && ( (x1-x0)>lim || (x0-x1)>lim) ) {
y1 = f(x1); x2 = x1 - (x1 - x0) * y1 / (y1 - y0)
x0 = x1; x1 = x2; y0 = y1;
}
incl = (x1>1) ? x1 : 1
}
{
expo = $1 / 100
if (incl != 1) expo = (incl^expo - 1/incl^expo) / (incl - 1/incl)
expo = (expo + 1) / 2
if (a != b) expo = ((a / b)^(2 * expo) - 1) / ((a / b)^2 - 1)
printf("%f\n", min + (max - min) * expo)
}
'
return 0
}
get_speed() {
2>&- scale_mapping 5 1 0.2 <"$SETTINGS_DIR"/speed || echo 1.0
}
get_freq() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/freq || echo 1.0
}
get_volume() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/volume || echo 1.0
}
get_rate() {
2>&- scale_mapping 1000 16000 48000 <"$SETTINGS_DIR"/rate || echo 16000
}
get_scale() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/scale || echo 1.0
}
get_stride() {
2>&- scale_mapping 1 60 400 <"$SETTINGS_DIR"/stride || echo 60
}
get_overlap() {
2>&- scale_mapping 0 0.2 1 <"$SETTINGS_DIR"/overlap || echo 0.2
}
get_search() {
2>&- scale_mapping 0 14 200 <"$SETTINGS_DIR"/search || echo 14
}
get_method() {
2>&- cat "$SETTINGS_DIR"/method || echo tempo
}
get_accel() {
2>&- scale_mapping 0.2 1 5 <"$SETTINGS_DIR"/accel || echo 1.0
}
get_voice() {
2>&- readlink "$SETTINGS_DIR"/voice
}
find -L "$SETTINGS_DIR" -maxdepth 1 -name voice -type l -exec rm {} \;
ls "$VOICES_DIR"/[a-z][a-z][1-9]:* >/dev/null 2>&- &&
test -x "$SCRIPT" &&
test -x "$DIR/mbrola" ||
set install
cd "$DIR"
case "$1" in
stop|pause)
;;
loop)
while "$SCRIPT" start ; do :; done
;;
start)
#xclip -o | grep -q . || exit
test -h "$SETTINGS_DIR/voice" || exec "$SCRIPT" adjust voice
find "$DIR" -name mplayer.\*.fifo -type p -exec rm -f {} \;
FIFO="$DIR/mplayer.$$.fifo"
trap 'rm -f "$FIFO"' EXIT
test -p "$FIFO" || mkfifo "$FIFO"
if voice=$(ls "$VOICES_DIR/$2":* 2>&-)
then shift
else voice="$(get_voice)"
fi
voice="${voice##*/}"
speed="$(get_speed)"
freq="$(get_freq)"
volume="$(get_volume)"
rate="$(get_rate)"
scale="$(get_scale)"
stride="$(get_stride)"
overlap="$(get_overlap)"
search="$(get_search)"
method="$(get_method)"
accel="$(get_accel)"
scaletempo="$scaletempo${scaletempo+:}scale=${scale:-1}"
scaletempo="$scaletempo${scaletempo+:}stride=${stride:-60}"
scaletempo="$scaletempo${scaletempo+:}overlap=${overlap:-0.20}"
scaletempo="$scaletempo${scaletempo+:}search=${search:-14}"
scaletempo="$scaletempo${scaletempo+:}speed=${method:-tempo}"
scaletempo="-af scaletempo=$scaletempo -speed ${accel:-1}"
xclip -o |
espeak -v mb-"${voice%:*}" |
"$DIR/mbrola" -e \
-t "${speed:-1}" \
-f "${freq:-1}" \
-v "${volume:-1}" \
-l "${rate:-16000}" \
"$VOICES_DIR/$voice" - -.wav |
mplayer -really-quiet -input file="$FIFO" $scaletempo -demuxer audio -
;;
list)
cd "$SETTINGS_DIR"
list=$(
echo "Nuvarande inställningar"
echo
for option in \
voice speed freq rate volume accel \
scale stride overlap search method dialog
do if test -h "$option"
then
setting=$(readlink "$option")
setting="${setting##*/}" && value=""
else
setting="$(cat $option 2>&-)"
value="$(get_$option)"
fi
test "$option" = dialog &&
setting="${value##*/}" && value=""
test "$option" = method &&
setting="${setting:-tempo}" && value=""
printf "%s:\t\t%s\t\t%s\n" \
"$option" "${setting:-0}" "${value:+(}$value${value:+)}"
done #| sort
)
create_dialog question "$list"
exit
;;
reset)
cd "$SETTINGS_DIR"
case "$2" in
'')
create_dialog question "Återställ standardinställningarna?" || exit
rm -f \
dialog speed freq volume rate scale stride overlap search method accel
;;
dialog|speed|freq|volume|rate|scale|stride|overlap|search|method|accel)
rm -f "$2"
;;
esac
;;
adjust)
case "$2" in '')
set "$1" $(
printf "%s\n" speed freq volume rate \
scale stride overlap search method accel voice dialog |
create_dialog list radio "Välj inställning" speed
)
test $# -gt 1 && exec "$SCRIPT" "$@" || exit
esac
value=$(cat "$SETTINGS_DIR/$2" 2>&-)
case "$2" in
voice)
case "$3" in
'')
voice=$(readlink "$SETTINGS_DIR"/voice)
voice=$(
ls "$VOICES_DIR"/[a-z][a-z][1-9]:* 2>&- |
create_dialog list radio "Välj röst" "^${voice#../}$"
) && test -n "$voice" && voice="$VOICES_DIR/$voice"
;;
*)
voice=$(ls "$VOICES_DIR/$3":* 2>&-)
;;
esac &&
ln -sf "$voice" "$SETTINGS_DIR"/voice
exit
;;
dialog)
case "$3" in
'')
value=$(
which zenity Xdialog 2>&- |
create_dialog list radio "Välj dialogrutesystem" "${value:-zenity}"
) && echo "$value" >"$SETTINGS_DIR/$2"
;;
zenity|Xdialog)
echo "$3" >"$SETTINGS_DIR/$2"
;;
esac
exit
;;
speed) title="Uppläsningshastighet" ;;
freq) title="Röstläge" ;;
volume) title="Uppläsningsvolym" ;;
rate) title="Rösttäthet" ;;
scale|stride|overlap|search|accel) title="scaletempo: $2" ;;
method)
case "$3" in
'')
value=$(
printf "%s\n" tempo pitch both none |
create_dialog list radio "scaletempo: $2" "${value:-tempo}"
) && echo "$value" >"$SETTINGS_DIR/$2"
;;
tempo|pitch|both|none)
echo "$3" >"$SETTINGS_DIR/$2"
;;
esac
exit
;;
*) exit
;;
esac
case "$3" in
'')
{ create_dialog scale "$title" "${value:-0}" || echo "$value"; } |
while read value
do test -n "$value" && echo "$value" >"$SETTINGS_DIR/$2"
done
;;
*)
echo "$3" |
awk -vvalue="$value" '{
value = ($1) ? value + $1 : 0
value = (value < 100) ? value : 100
value = (value > -100) ? value : -100
print(value)
}' >"$SETTINGS_DIR/$2"
;;
esac
;;
install)
URL="http://tcts.fpms.ac.be/synthesis/mbrola"
TMP=$(mktemp)
trap 'rm -f "$TMP"' EXIT
wget -qO- "$URL"/mbrcopybin.html |
sed -n '
s|.*"\(bin/[^"]*.zip\)"[^>]*>[^<]*LINUX i386.*|\1 (0.3Mb)|p
s|.*"\(dba/[^/]*/[^"]*\)"[^>]*>\([^:]*:\s*[^<]*\).*|\1\t\2|p
' >"$TMP"
voices=$(
cd /usr/share/espeak-data/voices/mb &&
echo mb-[a-z][a-z][1-9] |
sed 's/mb-//g;s/\(.\)\s\(.\)/\1|\2/g'
)
voices=$(
grep -E "/($voices)/" <"$TMP" | cut -f2 |
create_dialog list check "Välj språk" '^(sw|us|en)[[:digit:]]:' |
sed 's/:[^|]*//g'
)
test -n "$voices" || exit
rm -f "$VOICES_DIR"/[a-z][a-z][1-9]:* 2>&-
cd "$DATA_DIR"
grep -E "(^bin|/$voices/)" <"$TMP" |
awk '{
size[NR]=size[NR-1]+substr($NF,2,length($NF)-4)
$NF=""
voice[NR]=$0
} END {
for(i=1; i<=NR; i++) {
print(100*size[i]/size[NR],voice[i])
}
}' |
while read progress file voice
do test -f "${file##*/}" ||
wget -q "$URL/$file" 2>&1
if test -z "$voice"
then
unzip -p "${file##*/}" mbrola-linux-i386 >"$DIR"/mbrola
chmod +x "$DIR"/mbrola
else
unzip -p "${file##*/}" "${voice%%:*}" >"$VOICES_DIR/$voice" 2>&- ||
unzip -p "${file##*/}" "${voice%%:*}/${voice%%:*}" \
>"$VOICES_DIR/$voice"
fi
echo $progress
done |
create_dialog progress "Hämtar Röster..."
bind_key() {
eval $("$1"_info)
gconftool-2 -a "$KEY" |
awk '$1~/^'"$PREFIX"'[0-9]+'"$SUFFIX"'$/ && $3~/^'"$2"'$/{print($1)}' |
while read binding
do gconftool-2 -u "$KEY/$binding"
done
ID=$(
gconftool-2 -a "$KEY" |
sed -n "s/^\s*$PREFIX\([0-9]\+\)$SUFFIX\s*=\s*/\1\t/p" |
sort -n |
awk '{if($1-prev>1)exit;prev=$1}END{print(prev+1)}'
)
gconftool-2 \
-s -t str "$KEY/$PREFIX${ID:-1}$SUFFIX" "$2" \
-s -t str "$CMD/${PREFIX#run_}${ID:-1}" "$3"
}
for wm in metacity compiz ; do
bind_key "$wm" "F1" "$SCRIPT stop"
bind_key "$wm" "F2" "$SCRIPT pause"
bind_key "$wm" "F3" "$SCRIPT start"
bind_key "$wm" "F4" "$SCRIPT loop"
bind_key "$wm" "F5" "$SCRIPT adjust"
bind_key "$wm" "F6" "$SCRIPT list"
bind_key "$wm" "F7" "$SCRIPT reset"
bind_key "$wm" "F8" "$SCRIPT uninstall"
bind_key "$wm" "F9" "$SCRIPT install"
bind_key "$wm" "<Control>F1" "$SCRIPT voice"
bind_key "$wm" "<Control>F2" "$SCRIPT speed"
bind_key "$wm" "<Control>F3" "$SCRIPT freq"
bind_key "$wm" "<Control>F4" "$SCRIPT rate"
bind_key "$wm" "<Control>F5" "$SCRIPT volume"
bind_key "$wm" "<Control>F6" "$SCRIPT accel"
bind_key "$wm" "<Control>F7" "$SCRIPT scale"
bind_key "$wm" "<Control>F8" "$SCRIPT stride"
bind_key "$wm" "<Control>F9" "$SCRIPT overlap"
bind_key "$wm" "<Control>F10" "$SCRIPT search"
bind_key "$wm" "<Control>F11" "$SCRIPT method"
bind_key "$wm" "<Control>F12" "$SCRIPT dialog"
done
create_dialog info "$APP installerad"
exec "$SCRIPT" voice
;;
uninstall)
create_dialog question "Avinstallera $APP?" || exit
unbind_keys() {
eval $("$1"_info)
gconftool-2 -a "$CMD" |
grep -F "$SCRIPT" |
sed -n 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/p' |
while read binding
do gconftool-2 -u "$CMD/${PREFIX#run_}$binding"
gconftool-2 -u "$KEY/$PREFIX$binding$SUFFIX"
done
}
unbind_keys metacity
unbind_keys compiz
rm -rf "$DIR"
create_dialog info "$APP avinstallerad"
;;
voice|dialog|speed|freq|volume|rate|scale|stride|overlap|search|method|accel)
exec "$SCRIPT" adjust "$@"
;;
*)
exec "$SCRIPT" start "$@"
;;
esac
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Ja, där blev det träff!
Men just som det skulle lösas, så dök ännu ett hiner för den väntade
Scaletempo analysen.
Loop vill inte.
Jag ska se om jag ska se om bindningen har försvunnit.


Men just som det skulle lösas, så dök ännu ett hiner för den väntade
Scaletempo analysen.
Loop vill inte.

Jag ska se om jag ska se om bindningen har försvunnit.
-
- Inlägg: 3375
- Blev medlem: 06 sep 2008, 07:46
- OS: Crunchbang
- Utgåva: Vet inte/ingen utgåva passar
Re: Talsyntes: var finns programmen?
Det ser ut som det andra .
Där emot ser inte "våra" bindningar ut som "standard".
Där emot ser inte "våra" bindningar ut som "standard".