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

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

Kod: Markera allt

xclip -o

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 :D

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 :D
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.

Kod: Markera allt

~/bin/talsyntes-r15.sh install

Kod: Markera allt

~/bin/talsyntes-r15.sh start

Kod: Markera allt

~/bin/talsyntes-klippt.sh
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 ???