Sida 25 av 98

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:28
av Konservburk
Jag ser inget fel i ~/.talsynes/.

Nu har jag lagt in lite kod så att den visar exakt vilket kommando den kör vid själva uppläsningen, så att vi sedan kan testa det kommandot löst:

Kod: Markera allt

#!/bin/sh
# r3-test
case "$-" in *i*) return ;; esac
export LC_ALL=C
exec 2>&-
APP="Talsyntes"
DIR=~/".talsyntes"
SCRIPT="$DIR/talsyntes.sh"
mkdir -p "$DIR/data" "$DIR/voices"

test "x$SCRIPT" != "x$0" &&
cp -f "$0" "$SCRIPT" 2>&- &&
exec "$SCRIPT" "$@"

XDIALOG="Xdialog --wmclass '$APP' --cancel-label Avbryt --no-tags --stdout"

find -L "$DIR" -maxdepth 1 -name voice -type l -exec rm {} \;
test -h "$DIR/voice" || test "$1" = install || set voice

ls "$DIR"/voices/[a-z][a-z][1-9]:* >/dev/null 2>&- &&
test -x "$SCRIPT" &&
test -x "$DIR/mbrola" ||
set install

cd "$DIR"
case "$1" in
stop)
   pkill -P $(pgrep -d, "${SCRIPT##*/}") mplayer
;;
pause)
   find "$DIR" -name mplayer.\*.fifo -type p -exec sh -c 'echo pause >{}' \;
;;
start)
   "$SCRIPT" stop
   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/"$2":* 2>&-)
   then shift
   else voice="$(readlink voice)"
   fi
   voice="${voice#voices/}"
   speed="$2"
   freq="$3"
   volume="$4"
   rate="$5"
   test -z "$speed" && test -f speed &&
   speed=$(awk '{printf("%f",exp(0.01*log(1/5)*$1))}' <speed)
   test -z "$freq" && test -f freq &&
   freq=$(awk '{printf("%f",exp(-0.01*log(1/5)*$1))}' <freq)
   test -z "$volume" && test -f volume &&
   volume=$(awk '{printf("%f",exp(-0.01*log(1/5)*$1))}' <volume)
   test -z "$rate" && test -f rate &&
   rate=$(awk '{printf("%f",16000*exp(-0.01*log(1/3)*$1))}' <rate)
echo xclip -o \|
echo espeak -v mb-"${voice%:*}" \|
echo "$DIR/mbrola" -e \
      -t "${speed:-1}" \
      -f "${freq:-1}" \
      -v "${volume:-1}" \
      -l "${rate:-16000}" \
      "$DIR/voices/$voice" - -.wav \|
echo mplayer -input file="$FIFO" -really-quiet -demuxer audio -
   xclip -o |
   espeak -v mb-"${voice%:*}" |
   "$DIR/mbrola" -e \
      -t "${speed:-1}" \
      -f "${freq:-1}" \
      -v "${volume:-1}" \
      -l "${rate:-16000}" \
      "$DIR/voices/$voice" - -.wav |
   mplayer -input file="$FIFO" -really-quiet -demuxer audio -
;;
reset)
   case "$2" in
   '') rm -f speed freq volume rate ;;
   speed|freq|volume|rate) rm -f "$2" ;;
   esac
;;
adjust)
   case "$2" in
   '')
      test -f speed && speed=$(cat speed) || speed=0
      test -f freq && freq=$(cat freq) || freq=0
      test -f rate && rate=$(cat rate) || rate=0
      set -- $(
         $XDIALOG --title "$APP" --separator " " \
            --3rangesbox "Röstparametrar" 22 60 \
            "Uppläsningshastighet" -100 100 "$speed" \
            "Röstläge" -100 100 "$freq" \
            "Rösttäthet" -100 100 "$rate"
      )
      if test $# -eq 3
      then
         echo "$1" >speed
         echo "$2" >freq
         echo "$3" >rate
      fi
      exit
   ;;
   speed) TITLE="Uppläsningshastighet" ;;
   freq) TITLE="Röstläge" ;;
   volume) TITLE="Uppläsningsvolym" ;;
   rate) TITLE="Rösttäthet" ;;
   *) exit ;;
   esac
   test -f "$2" && value=$(cat "$2") || value=0
   case "$3" in
   '')
      value=$(
         $XDIALOG --title "$APP" --rangebox "$TITLE" 10 60 -100 100 "$value"
      )
      test -n "$value" &&
      echo "$value" >"$2"
   ;;
   *)
      echo "$3" |
      awk -vvalue="$value" '{
         if($1) value+=$1
         else value=0
         if(value>100) value=100
         if(value<-100) value=-100
         print(value)
      }' >"$2"
   ;;
   esac
;;
voice)
   case "$2" in
   '')
      voice=$(
         eval $XDIALOG --title "'$APP'" --no-close --no-cancel \
            --radiolist "'Välj röst'" 20 60 0 $(
            ls voices/[a-z][a-z][1-9]:* 2>&- |
            while read voice
            do test "x$voice" = "x$(readlink voice)" &&
               radiobox=on ||
               radiobox=off
               printf "%s " "'$voice'" "'${voice#voices/}'" "$radiobox"
            done
         )
      )
   ;;
   *)
      voice=$(ls "voices/$2":* 2>&-)
   ;;
   esac
   test -n "$voice" &&
   ln -sf "$voice" voice
;;
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"
   cd "$DIR"
   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=$(
      eval $XDIALOG --title "'$APP: Installation'" --separator "'|'" \
         --checklist "'Välj språk'" 20 60 0 $(
         grep -E "/($voices)/" <"$TMP" |
         while read file voice
         do case "$voice" in
            sw*|us*|en*) checkbox=on ;;
            *) checkbox=off ;;
            esac
            printf "%s " "${voice%:*}" "'$voice'" "$checkbox"
         done
      )
   )
   test -z "$voices" && exit
   rm -f voices/[a-z][a-z][1-9]:* 2>&-
   cd data
   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%%:*}" >"$DIR/voices/$voice" 2>&- ||
         unzip -p "${file##*/}" "${voice%%:*}/${voice%%:*}" \
            >"$DIR/voices/$voice"
      fi
      echo $progress
   done |
   $XDIALOG --title "$APP: Installation" \
      --no-close --gauge "Hämtar Röster..." 10 60

   bind_key() {
      case "$1" in
      metacity)
         KEY="/apps/metacity/global_keybindings"
         CMD="/apps/metacity/keybinding_commands"
         PREFIX="run_command_"
         SUFFIX=""
      ;;
      compiz)
         KEY="/apps/compiz/general/allscreens/options"
         CMD="/apps/compiz/general/allscreens/options"
         PREFIX="run_command"
         SUFFIX="_key"
      ;;
      esac
      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 start 0.5"
      bind_key "$wm" "F5" "$SCRIPT start sw1 0.5"
      bind_key "$wm" "F6" "$SCRIPT speed 0"
      bind_key "$wm" "F7" "$SCRIPT speed -10"
      bind_key "$wm" "F8" "$SCRIPT speed +10"
      bind_key "$wm" "F9" "$SCRIPT adjust"
      bind_key "$wm" "F10" "$SCRIPT voice"
      bind_key "$wm" "F11" "$SCRIPT voice sw1"
      bind_key "$wm" "F12" "$SCRIPT voice en1"
   done
   $XDIALOG --title "$APP" --msgbox "$APP installerad" 10 60

   exec "$SCRIPT" voice
;;
speed|freq|volume|rate) exec "$SCRIPT" adjust "$@" ;;
*) exec "$SCRIPT" start "$@" ;;
esac

Kod: Markera allt

~/bin/talsyntes.sh start

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:36
av Hans Linde
hans@hans-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-sw1 |
/home/hans/.talsyntes/mbrola -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav |
mplayer -input file=/home/hans/.talsyntes/mplayer.25579.fifo -really-quiet -demuxer audio -
hans@hans-ubuntu:~$

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:40
av Konservburk
Hans Linde skrev:hans@hans-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-sw1 |
/home/hans/.talsyntes/mbrola -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav |
mplayer -input file=/home/hans/.talsyntes/mplayer.25579.fifo -really-quiet -demuxer audio -
hans@hans-ubuntu:~$
Då kör du löst från en terminal:

Kod: Markera allt

mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
espeak -v mb-sw1 |
"/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav" |
mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:43
av Hans Linde
hans@hans-ubuntu:~$ mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ espeak -v mb-sw1 |
> "/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav" |
> mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -
FATAL ERROR : cannot find file /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav !
mplayer: could not connect to socket
mplayer: No such file or directory

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:44
av Konservburk
Hans Linde skrev:FATAL ERROR : cannot find file /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav !
mplayer: could not connect to socket
mplayer: No such file or directory
Klippa-klistra-fel... vi testar en gång till:

Kod: Markera allt

rm -f "/home/hans/.talsyntes/mplayer.$$.fifo"
mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
espeak -v mb-sw1 |
"/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male" - -.wav |
mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:49
av Hans Linde
hans@hans-ubuntu:~$ rm -f "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ espeak -v mb-sw1 |
> "/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male" - -.wav |
> mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 11:59
av Konservburk
Hans Linde skrev:hans@hans-ubuntu:~$ rm -f "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ espeak -v mb-sw1 |
> "/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male" - -.wav |
> mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
Fler klippa-klistra-fel ser jag nu. Vi glömde ju att skicka något som ska läsas upp till espeak!

Kod: Markera allt

rm -f "/home/hans/.talsyntes/mplayer.$$.fifo"
mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
echo något som ska läsas upp |
espeak -v mb-sw1 |
"/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male" - -.wav |
mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:04
av Hans Linde
Klockrent: "något som ska läsas upp"

hans@hans-ubuntu:~$ rm -f "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
hans@hans-ubuntu:~$ echo något som ska läsas upp |
> espeak -v mb-sw1 |
> "/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male" - -.wav |
> mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:11
av Konservburk
Hans Linde skrev:Klockrent: "något som ska läsas upp"
Enda problemet nu är ju att vi fortfarande inte vet varför ~/bin/talsyntes.sh inte vill läsa upp något. Nu gjorde vi ju på exakt samma sätt som den gör. Eller nästan... vi skickade inte texten från utklippet.

Funkar det verkligen inte med ~/bin/talsyntes.sh start om du har något vettigt i utklippet?

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:17
av Hans Linde
Nej tyvärr, inget ljud.
och det här maskerat....ej ctlC....det har vi inte gjort tidigare....med så funkar det andra programmmen, men det är sämre.

" Enda problemet nu är ju att vi fortfarande inte vet varför ~/bin/talsyntes.sh inte vill läsa upp något. Nu gjorde vi ju på exakt samma sätt som den gör. Eller nästan... vi skickade inte texten från utklippet."




hans@hans-ubuntu:~$ ~/bin/talsyntes.sh start
xclip -o |
espeak -v mb-sw1 |
/home/hans/.talsyntes/mbrola -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav |
mplayer -input file=/home/hans/.talsyntes/mplayer.7428.fifo -really-quiet -demuxer audio -
hans@hans-ubuntu:~$

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:28
av Konservburk
Blir det bättre om du byter ut raden:

xclip -o |

mot

echo något som ska läsas upp |

?

Det är någonstans runt rad 50.

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:39
av Hans Linde
De tala fint nu.

Jag bytte
echo xclip -o |
till
echo något som ska läsas upp |

Sedan körde jag:

rm -f "/home/hans/.talsyntes/mplayer.$$.fifo"
mkfifo "/home/hans/.talsyntes/mplayer.$$.fifo"
echo något som ska läsas upp |
espeak -v mb-sw1 |
"/home/hans/.talsyntes/mbrola" -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 "/home/hans/.talsyntes/voices/sw1: Swedish Male" - -.wav |
mplayer -input file="/home/hans/.talsyntes/mplayer.$$.fifo" -really-quiet -demuxer audio -

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:50
av Konservburk
Du skulle byta raden i filen ~/bin/talsyntes.sh och sedan köra:

Kod: Markera allt

~/bin/talsyntes.sh start

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:53
av Hans Linde
Det var den filen jag redigerad,
men det här är tyst.

hans@hans-ubuntu:~$ ~/bin/talsyntes.sh start
espeak -v mb-sw1 |
/home/hans/.talsyntes/mbrola -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav |
mplayer -input file=/home/hans/.talsyntes/mplayer.6473.fifo -really-quiet -demuxer audio -
hans@hans-ubuntu:~$

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 12:56
av Hans Linde
Något knivigt , för en gång skull. ;D

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 13:04
av Konservburk
Hans Linde skrev:Det var den filen jag redigerad,
men det här är tyst.

hans@hans-ubuntu:~$ ~/bin/talsyntes.sh start
espeak -v mb-sw1 |
/home/hans/.talsyntes/mbrola -e -t 1.000000 -f 1.000000 -v 1 -l 16000.000000 /home/hans/.talsyntes/voices/sw1: Swedish Male - -.wav |
mplayer -input file=/home/hans/.talsyntes/mplayer.6473.fifo -really-quiet -demuxer audio -
hans@hans-ubuntu:~$
Nu har jag skalat bort precis allting som inte har med själva uppspelningen att göra:

Kod: Markera allt

#!/bin/sh
DIR=~/".talsyntes"
cd "$DIR"
voice="$(readlink voice)"
voice="${voice#voices/}"
xclip -o |
espeak -v mb-"${voice%:*}" |
"$DIR/mbrola" -e \
   "$DIR/voices/$voice" - -.wav |
mplayer -really-quiet -demuxer audio -
Om det här inte funkar så har vi hittat var felet ligger. Om det däremot funkar så får vi utvidga tills vi hittar exakt var det går åt skogen. Alltid lika spännande med felsöknig.

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 13:15
av Hans Linde
Då får jag säga Grattis. :)

Det är tyst. Följande är market:
"Om det här inte funkar så har vi hittat var felet ligger. Om det däremot funkar så får vi utvidga tills vi hittar exakt var det går åt skogen. Alltid lika spännande med felsöknig."


hans@hans-ubuntu:~$ ~/bin/talsyntes.sh start
/home/hans/bin/talsyntes.sh: 10: xclip: not found
mplayer: could not connect to socket
mplayer: No such file or directory
hans@hans-ubuntu:~$

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 13:16
av Konservburk
Hans Linde skrev:/home/hans/bin/talsyntes.sh: 10: xclip: not found
Men se där... du verkar ju sakna xclip på den datorn.

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 13:20
av Hans Linde
och??
eller va bra??
ja ä lia klok ???

Re: Talsyntes/Festival/Scaletempo/Ubuntu-AMD64

Postat: 13 okt 2008, 13:24
av micke_nordin

Kod: Markera allt

sudo apt-get install xclip
/Micke