Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: festival --server, asterisk 1.8, locale, utf8  (Přečteno 1998 krát)

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
festival --server, asterisk 1.8, locale, utf8
« kdy: 12 Srpna 2010, 01:01:08 »
Neví někdo jak festival v server režimu uchodit aby zpracovával korektně vstup v UTF8 nebo si jej překódovával třeba přes uconv sám? V latin2 (locales nastaveno na cs_CZ) to funguje hezky, ale v UTF8 na diakritiku slyším v telefonu samé "neznámý, neznámý, neznámý, neznámý a občas mezi tím nějaké písmeno"

Lze v případě používání festivalu dopsat cosi do festival.scm co zabezpečí tuto funkčnost?
Nebo nějak upravit v  originální
Kód: [Vybrat]
; Festival command to send to the server.
; Defaults to: (tts_textasterisk "%s" 'file)(quit)\n
; %s is replaced by the desired text to say. The command MUST end with a
; (quit) directive, or the cache handling mechanism will hang. Do not
; forget the \n at the end.
;
;festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
v /etc/asterisk/festival.conf ?

Nebo nějaký úplně jiný nápad jak z asterisku vyrazit český hlas z UTF8 textu?


V /etc/asterisk/extensions.com mám v demu přihozeno
Kód: [Vybrat]
exten => 4,1,Festival(úplně žluťoučký kůň úpěl ďábelské ódy,any)
exten => 4,n,Festival(karel asi nese kafe,any)
exten => 4,n,Goto(s,restart)            ; Start with the congratulations

festival.scm mám výchozí, plus
Kód: [Vybrat]
;; http://www.voip-info.org/wiki/view/Asterisk+festival+installation
;; http://lodge.glasgownet.com/2009/05/20/asterisk-and-festival-integration/
;; http://liter.cz/Reportaze/112038-view.aspx
;; http://dev.jabbim.cz/jabbim/wiki/Festival

;; Enable access to localhost (needed by debian users)
(set! server_access_list '("localhost\\.localdomain" "localhost"))

;; set italian voice (comment the following 2 lines to use british_american)
;; (require 'speech-dispatcher)
(require 'czech)
(require 'czech-unisyn)
;; (require 'czech-mbrola)
;; (require 'nopauses)
(set! inhibit-initial-pauses t)
;; (voice_czech_ph)
(set! voice_default 'voice_czech_ph)
;;; Command for Asterisk begin


(define (tts_textasterisk string mode)
"(tts_textasterisk STRING MODE)
Apply tts to STRING. This function is specifically designed for
use in server mode so a single function call may synthesize the string.
This function name may be added to the server safe functions."
(let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string)))))
(utt.wave.resample wholeutt 8000)
(utt.wave.rescale wholeutt 5)
(utt.send.wave.client wholeutt)))

;;; Command for Asterisk end

debug asterisk cli:
Kód: [Vybrat]
asterisk01:~# asterisk -rgc                       
u-Law coding table test complete.
u-Law tandem transcoding test complete.
a-Law coding tables test complete.
a-Law tandem transcoding test complete.
Asterisk SVN-branch-1.8-r281575, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
[ Booting...
[ Reading Master Configuration ]
[ Initializing Custom Configuration Options ]
Connected to Asterisk SVN-branch-1.8-r281575 currently running on asterisk01 (pid = 1761)
Verbosity is at least 999
Core debug is at least 999
    -- Starting simple switch on 'DAHDI/1-1'
  == Starting DAHDI/1-1 at Incoming,s,1 failed so falling back to exten 's'
  == Starting DAHDI/1-1 at Incoming,s,1 still failed so falling back to context 'default'
    -- Executing [s@default:1] Set("DAHDI/1-1", "CHANNEL(language)=cz") in new stack
    -- Executing [s@default:2] Answer("DAHDI/1-1", "") in new stack
    -- Executing [s@default:3] Set("DAHDI/1-1", "TIMEOUT(digit)=5") in new stack
    -- Digit timeout set to 5.000
    -- Executing [s@default:4] Set("DAHDI/1-1", "TIMEOUT(response)=10") in new stack
    -- Response timeout set to 10.000
    -- Executing [s@default:5] BackGround("DAHDI/1-1", "demo-congrats") in new stack
    -- <DAHDI/1-1> Playing 'demo-congrats.ulaw' (language 'cz')
    -- Executing [4@default:1] Festival("DAHDI/1-1", "úplně žluťoučký kůň úpěl ďábelské ódy,any") in new stack
  == Parsing '/etc/asterisk/festival.conf':   == Found
    -- Executing [4@default:2] Festival("DAHDI/1-1", "karel asi nese kafe,any") in new stack
  == Parsing '/etc/asterisk/festival.conf':   == Found
    -- Executing [4@default:3] Goto("DAHDI/1-1", "s,restart") in new stack
    -- Goto (default,s,5)
    -- Executing [s@default:5] BackGround("DAHDI/1-1", "demo-congrats") in new stack
    -- <DAHDI/1-1> Playing 'demo-congrats.ulaw' (language 'cz')
    -- Invalid extension '88' in context 'default' on DAHDI/1-1
  == CDR updated on DAHDI/1-1
    -- Executing [i@default:1] Playback("DAHDI/1-1", "invalid") in new stack
    -- <DAHDI/1-1> Playing 'invalid.slin' (language 'cz')
    -- Auto fallthrough, channel 'DAHDI/1-1' status is 'UNKNOWN'
    -- Hanging up on 'DAHDI/1-1'
    -- Hungup 'DAHDI/1-1'


Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: festival --server, asterisk 1.8, locale, utf8
« Odpověď #1 kdy: 13 Srpna 2010, 14:00:13 »
Mno hlásím mírný pokrok v mezích zákona.

Základ s eposem namísto festivalu jsem někde vygooglil ( přeci jenom violka je o třídu výše než hlasy festivalu, ikdyž na zuzanu z realspeek se nechytá - ale pro linux bohužel.)

Festival má rychlejší odezvu, ale nemá violku...

Takže základní problém - utf8 - řeším konverzí přes iconv.

funkční blok v extensions.conf:
Kód: [Vybrat]
exten => 6,1, NoOP
exten => 6,n,Answer
exten => 6,n,Set(TEXT_TO_SAY="Úplně žluťoučký kůň úpěl ďábelské ódy. Úpěl je na stříbrném jezeře.")
exten => 6,n,Set(TMP_SAY_FILE=/var/spool/asterisk/tmp/say_${MD5(${RAND()})})
exten => 6,n,System(echo ${TEXT_TO_SAY} | LANG=cs_CZ.UTF-8 iconv -f UTF-8 -t iso8859-2 | /usr/bin/say-epos --voice violka --out_sampling_rate 8000 --init_t 120 --init_i 140 --ulaw --wave_header off -o - > ${TMP_SAY_FILE}.ulaw)
exten => 6,n,Playback(${TMP_SAY_FILE})
exten => 6,n,Goto(s,restart)            ; Start with the congratulations
exten => 6,n,Hangup
exten => 6,n,GotoIf($[ "${TMP_SAY_FILE}" = "" ]?continue)
exten => 6,n,System(rm ${TMP_SAY_FILE}.ulaw)
exten => 6,n(continue),Hangup

Teď už jen to ještě nějak zkusit prohnat přes sox aby nebyly dlouhé pauzy po tečkách a přepsat to do nějaké funkce nebo makra.
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

 

Provoz zaštiťuje spolek OpenAlt.