Sida 48 av 98
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:02
av Hans Linde
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh
1) Om n�got felar s� borde den klaga p� det ifall du f�rs�ker starta fr�n en terminal.
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:08
av Konservburk
Kod: Markera allt
echo hejsan | espeak -v mb-sw1 | ~/.talsyntes/mbrola -e ~/.talsyntes/voices/sw1\:\ Swedish\ Male - test.wav
aplay test.wav
Kod: Markera allt
echo hejsan | espeak -v mb-sw1 | ~/.talsyntes/mbrola -e ~/.talsyntes/voices/sw1\:\ Swedish\ Male - -.wav | mplayer -demuxer audio -
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:12
av Hans Linde
Ja visst det där funkar.
Precis som vid förra testen.
hans@hans-ubuntu:~$
hans@hans-ubuntu:~$ echo hejsan | espeak -v mb-sw1
h 86
e 97 0 106 80 82 100 82
j 65
s 100
a 67 0 84 80 80 100 80
n 116 100 73
_ 263
_ 1
hans@hans-ubuntu:~$ echo hejsan | espeak -v mb-sw1 | ~/.talsyntes/mbrola -e ~/.talsyntes/voices/sw1\:\ Swedish\ Male - test.wav
hans@hans-ubuntu:~$ aplay test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
hans@hans-ubuntu:~$ echo hejsan | espeak -v mb-sw1 | ~/.talsyntes/mbrola -e ~/.talsyntes/voices/sw1\:\ Swedish\ Male - -.wav | mplayer -demuxer audio -
MPlayer 1.0rc2-4.2.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (Family: 15, Model: 4, Stepping: 3)
CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing -.
Reading from stdin...
Audio file file format detected.
==========================================================================
Forced audio codec: mad
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 16000 Hz, 1 ch, s16le, 256.0 kbit/100.00% (ratio: 32000->32000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 16000Hz 1ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 0.1 (00.0) of -0.0 (unknown) 0.0%
Exiting... (End of file)
hans@hans-ubuntu:~$
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:15
av Konservburk
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:18
av Hans Linde
hans@hans-ubuntu:~$ xclip -o
xclip -ohans@hans-ubuntu:~$
hans@hans-ubuntu:~$
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:22
av Konservburk
Vad finns det för filer i katalogen ~/.talsyntes ?
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:28
av Hans Linde
bild
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:34
av Konservburk
Här är en version med det mesta bortklippt. Bara själva uppläsningen är kvar. Fungerar den? Eller fungerar den inte?
Kod: Markera allt
#!/bin/sh
export LC_ALL=C
DIR=~/".talsyntes"
VOICES_DIR="$DIR/voices"
FIFO="$DIR/mplayer.$$.fifo"
TMP="$(mktemp)"
trap 'rm -f "$FIFO" "$TMP"' EXIT
voice=$(ls "$VOICES_DIR/sw1":* 2>&-)
voice="${voice##*/}"
xclip -o |
awk -F'[ \t\n]*[?.,!][ \t\n]' '{
gsub("\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]","")
gsub("[ \t](and|or)[ \t\n]","\n&")
for(i=1;i<=NF;i++) {
printf(" %s ", $i)
if(i==NF || match($(i+1),"[ \t]")) {
printf("\n")
}
}
}' >"$TMP"
line=$(cat "$DIR"/line 2>&-)
test -s "$TMP" &&
if cmp -s "$TMP" "$DIR"/text
then :
else mv "$TMP" "$DIR"/text && line=1
fi
test "${line:-1}" -gt $(wc -l <"$DIR"/text) ||
test "${line:-1}" -lt 1 && line=1
sed -n "${line:-1},\$p" "$DIR"/text |
while read sentence
do echo "${line:-1}) $sentence"
echo "$sentence" |
espeak \
-a "${amplit:-100}" \
-g "${wordgap:-0}" \
-p "${pitch:-50}" \
-s "${espeed:-170}" \
-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 -
line=$(expr "${line:-1}" + 1)
echo "$line" >"$DIR"/line
done
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:41
av Hans Linde
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh uninstall
1) ~/bin/talsyntes.sh
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh install
1) ~/bin/talsyntes.sh
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$
hans@hans-ubuntu:~$
Inget ljud.
Endel fönster öppnas.
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:49
av Konservburk
Du skulle inte avinstallerat den gamla. Till och med installationsdelen är bortklippt från testversionen.
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:52
av Hans Linde
Okay, jag intallerar r15 igen och den "klippta versionen".
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 18:57
av Hans Linde
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh install
1) No such file
mplayer: could not connect to socket
mplayer: No such file or directory
2) or directory
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$
Rösten hörs

Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:04
av Konservburk
Hans Linde skrev:Rösten hörs

Med r15? Eller bara med den klippta versionen?
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:14
av Hans Linde
jag tror att jag gjort vad som behöv för att
1a installera r15 (utan att av installer den reducerade)
2 installera den reducerade.
3 kör den samma i terminal, mao upprepning av installation.
Ska jag göra om det och göra allt terminal?
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:17
av Konservburk
Tanken var att när r15 är installerad så ska du köra den klippta versionen från en terminal och se om den fungerar.
Det kanske är det du har gjort? r15 fungerar inte? men den klippta fungerar?
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:28
av Hans Linde
hans@hans-ubuntu:~$ ~/bin/talsyntes-r15.sh install
hans@hans-ubuntu:~$ ~/bin/talsyntes-r15.sh start
1) ~/bin/talsyntes-r15.sh start
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$ ~/bin/talsyntes-klippt.sh
1) ~/bin/talsyntes-klippt.sh
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$
Rösten hörs endast på slutet.
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:31
av Konservburk
Så jag har med andra ord lyckats klippa bort det som strular.
Var har r15 fungerat? Bara på amd64?
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:36
av Konservburk
Här är en inte lika hårt klippt version:
Kod: Markera allt
#!/bin/sh
# r15-klipp2
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
case "$1" in
start)
pgrep -P $(pgrep -u"$(id -u)" -d, "${SCRIPT##*/}") mplayer |
while read pid
do kill $(ps -oppid= "$pid") "$pid"
done
;;
*)
ps -opid=,ppid=,args= $(pgrep -u"$(id -u)" "${SCRIPT##*/}") |
grep -vE "(^|[[:blank:]]+)$$([[:blank:]]+|$)" |
grep -q "$*$" && exit
;;
esac
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_amplit() {
2>&- scale_mapping 0 100 200 <"$SETTINGS_DIR"/amplit || echo 100
}
get_wordgap() {
2>&- scale_mapping -50 0 50 <"$SETTINGS_DIR"/wordgap || echo 0
}
get_pitch() {
2>&- scale_mapping 0 50 99 <"$SETTINGS_DIR"/pitch || echo 50
}
get_espeed() {
2>&- scale_mapping 80 170 370 <"$SETTINGS_DIR"/espeed || echo 170
}
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
}
cd "$DIR"
case "$1" in
start)
find "$DIR" -name mplayer.\*.fifo -type p -exec rm -f {} \;
FIFO="$DIR/mplayer.$$.fifo"
TMP="$(mktemp)"
trap 'rm -f "$FIFO" "$TMP"' EXIT
test -p "$FIFO" || mkfifo "$FIFO"
if voice=$(ls "$VOICES_DIR/$2":* 2>&-)
then shift
else voice="$(get_voice)"
fi
voice="${voice##*/}"
amplit="$(get_amplit)"
wordgap="$(get_wordgap)"
pitch="$(get_pitch)"
espeed="$(get_espeed)"
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 |
awk -F'[ \t\n]*[?.,!][ \t\n]' '{
gsub("\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]","")
gsub("[ \t](and|or)[ \t\n]","\n&")
for(i=1;i<=NF;i++) {
printf(" %s ", $i)
if(i==NF || match($(i+1),"[ \t]")) {
printf("\n")
}
}
}' >"$TMP"
line=$(cat "$DIR"/line 2>&-)
test -s "$TMP" &&
if cmp -s "$TMP" "$DIR"/text
then :
else mv "$TMP" "$DIR"/text && line=1
fi
test "${line:-1}" -gt $(wc -l <"$DIR"/text) ||
test "${line:-1}" -lt 1 && line=1
sed -n "${line:-1},\$p" "$DIR"/text |
while read sentence
do echo "${line:-1}) $sentence"
echo "$sentence" |
espeak \
-a "${amplit:-100}" \
-g "${wordgap:-0}" \
-p "${pitch:-50}" \
-s "${espeed:-170}" \
-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 -
line=$(expr "${line:-1}" + 1)
echo "$line" >"$DIR"/line
done
;;
*)
exec "$SCRIPT" start "$@"
;;
esac
Den bygger fortfarande på att du ska ha r15 installerad.
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:52
av Hans Linde
Var har r15 fungerat? Bara på amd64?
Riktigt.
Re: Talsyntes:____"För Folk I Tiden"____[HÖGTRYCKSTRÅD]
Postat: 29 okt 2008, 19:56
av Hans Linde
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh install
1) ~/bin/talsyntes-klippt.sh
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh
1) ~/bin/talsyntes.sh
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$
Det är tyst
