<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=TTS%3A_Hora_Catalana</id>
	<title>TTS: Hora Catalana - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=TTS%3A_Hora_Catalana"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=TTS:_Hora_Catalana&amp;action=history"/>
	<updated>2026-04-20T05:53:21Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=TTS:_Hora_Catalana&amp;diff=259502&amp;oldid=prev</id>
		<title>Joan: /* script bash: hora_catalana.sh */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=TTS:_Hora_Catalana&amp;diff=259502&amp;oldid=prev"/>
		<updated>2020-05-20T15:06:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;script bash: hora_catalana.sh&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
=Introducció=&lt;br /&gt;
Hora Catalana:&lt;br /&gt;
*https://www.horacatalana.cat/&lt;br /&gt;
D'aquí es pot agafar el codi. Es pot fer una millora: els apòstrofs. Hauria de ser ''dos quarts d'una'' en comptes de ''dos quarts de una''.&lt;br /&gt;
He fet les primeres proves de fer sonar el Festival a través de NodeJS:&lt;br /&gt;
*Langtrainer:_Text_To_Speech-TTS#Fer_sonar_Festival_a_trav.C3.A9s_de_NodeJS_.28Javascript.29&lt;br /&gt;
=Codi=&lt;br /&gt;
El principal problema que m'he trobat és les funcions de write i append de la llibreria '''fs'' (''fs.write), que són asíncrones. Això té fàcil solució utilitzant la versió sync: ''fs.writeSync''. Si faig servir la versió asíncrona, per escriure una línia he d'esperar que l'anterior s'hagi acabat d'escriure.&lt;br /&gt;
&lt;br /&gt;
===script node: hora_catalana.js===&lt;br /&gt;
Té per missió calcular l'hora catalana; generar el fitxer ''hora_catalana.scm''; i cridar el script ''hora_catalana.sh''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//càlcul de l'hora catalana: basat en el codi de: https://www.horacatalana.cat/ (Carles Pujol i Torrecillas)&lt;br /&gt;
&lt;br /&gt;
let hora_catalana = Hnum()&lt;br /&gt;
console.log(hora_catalana)&lt;br /&gt;
&lt;br /&gt;
fs = require('fs');&lt;br /&gt;
&lt;br /&gt;
//fs.open('prova_tts.scm', 'w', function (err, file) {&lt;br /&gt;
//	if (err) throw err;&lt;br /&gt;
//	console.log('Saved!');&lt;br /&gt;
	fs.writeFile('hora_catalana_tts.scm', '(voice_upc_ca_ona_hts)', function (err,data) {&lt;br /&gt;
		if (err) {&lt;br /&gt;
			return console.log(err);&lt;br /&gt;
		}&lt;br /&gt;
		console.log(data);&lt;br /&gt;
		fs.appendFile('hora_catalana_tts.scm', '(SayText &amp;quot;' + hora_catalana + '&amp;quot;)', function (err,data) {&lt;br /&gt;
		//fs.appendFile('prova_tts.scm', '(SayText &amp;quot;hola catalunya&amp;quot;)', function (err,data) {&lt;br /&gt;
		  if (err) {&lt;br /&gt;
		    return console.log(err);&lt;br /&gt;
		  }&lt;br /&gt;
		  console.log(data);&lt;br /&gt;
		  sonar_festival()&lt;br /&gt;
&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
//});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function sonar_festival() {&lt;br /&gt;
	var cp = require('child_process');&lt;br /&gt;
	var ls = cp.spawn('bash', ['hora_catalana.sh']);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	ls.stdout.on('data', function(data) {&lt;br /&gt;
	        console.log('Message: ' + data);&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	ls.on('close', function(code, signal) {&lt;br /&gt;
	        console.log('festival finished...');&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function Hnum(){&lt;br /&gt;
	H = new Date()&lt;br /&gt;
	currentHours = H.getHours();&lt;br /&gt;
	currentMinutes =H.getMinutes();&lt;br /&gt;
	currentSeconds = H.getSeconds();&lt;br /&gt;
	&lt;br /&gt;
	currentHours = ( currentHours &amp;lt; 10 ? &amp;quot;0&amp;quot; : &amp;quot;&amp;quot; ) + currentHours;&lt;br /&gt;
    currentMinutes = ( currentMinutes &amp;lt; 10 ? &amp;quot;0&amp;quot; : &amp;quot;&amp;quot; ) + currentMinutes;&lt;br /&gt;
    currentSeconds = ( currentSeconds &amp;lt; 10 ? &amp;quot;0&amp;quot; : &amp;quot;&amp;quot; ) + currentSeconds;&lt;br /&gt;
&lt;br /&gt;
	nomMes=&amp;quot;&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	switch(H.getMonth())&lt;br /&gt;
	{&lt;br /&gt;
		case 0: nomMes=&amp;quot;de Gener&amp;quot;; break;&lt;br /&gt;
		case 1: nomMes=&amp;quot;de Febrer&amp;quot;; break;&lt;br /&gt;
		case 2: nomMes=&amp;quot;de Març&amp;quot;; break;&lt;br /&gt;
		case 3: nomMes=&amp;quot;d'Abril&amp;quot;; break;&lt;br /&gt;
		case 4: nomMes=&amp;quot;de Maig&amp;quot;; break;&lt;br /&gt;
		case 5: nomMes=&amp;quot;de Juny&amp;quot;; break;&lt;br /&gt;
		case 6: nomMes=&amp;quot;de Juliol&amp;quot;; break;&lt;br /&gt;
		case 7: nomMes=&amp;quot;d'Agost&amp;quot;; break;&lt;br /&gt;
		case 8: nomMes=&amp;quot;de Setembre&amp;quot;; break;&lt;br /&gt;
		case 9: nomMes=&amp;quot;d'Octubre&amp;quot;; break;&lt;br /&gt;
		case 10: nomMes=&amp;quot;de Novembre&amp;quot;; break;&lt;br /&gt;
		case 11: nomMes=&amp;quot;de Desembre&amp;quot;; break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	var Hora = H.getHours();&lt;br /&gt;
	var Minuts = H.getMinutes();&lt;br /&gt;
	if(Minuts&amp;gt;10){&lt;br /&gt;
		Hora=Hora+1;&lt;br /&gt;
		if(Hora&amp;gt;23){&lt;br /&gt;
			Hora=0;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	var HoraTxt=&amp;quot;&amp;quot;;&lt;br /&gt;
	var Txt=&amp;quot;&amp;quot;;&lt;br /&gt;
	var Art1=&amp;quot;&amp;quot;;&lt;br /&gt;
	var Art2=&amp;quot;&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
	if(Hora==1||Hora==11){&lt;br /&gt;
		Art1=&amp;quot;d'&amp;quot;;&lt;br /&gt;
		Art2=&amp;quot;la &amp;quot;;&lt;br /&gt;
	}else{&lt;br /&gt;
		Art1=&amp;quot;de &amp;quot;;&lt;br /&gt;
		Art2=&amp;quot;les &amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	switch(Hora)&lt;br /&gt;
	{&lt;br /&gt;
		case 1: HoraTxt=&amp;quot;una&amp;quot;; break;&lt;br /&gt;
		case 2: HoraTxt=&amp;quot;dues&amp;quot;; break;&lt;br /&gt;
		case 3: HoraTxt=&amp;quot;tres&amp;quot;; break;&lt;br /&gt;
		case 4: HoraTxt=&amp;quot;quatra&amp;quot;; break;&lt;br /&gt;
		case 5: HoraTxt=&amp;quot;cinc&amp;quot;; break;&lt;br /&gt;
		case 6: HoraTxt=&amp;quot;sis&amp;quot;; break;&lt;br /&gt;
		case 7: HoraTxt=&amp;quot;set&amp;quot;; break;&lt;br /&gt;
		case 8: HoraTxt=&amp;quot;vuit&amp;quot;; break;&lt;br /&gt;
		case 9: HoraTxt=&amp;quot;nou&amp;quot;; break;&lt;br /&gt;
		case 10: HoraTxt=&amp;quot;deu&amp;quot;; break;&lt;br /&gt;
		case 11: HoraTxt=&amp;quot;onze&amp;quot;; break;&lt;br /&gt;
		case 12: HoraTxt=&amp;quot;dotze&amp;quot;; break;&lt;br /&gt;
		case 13: HoraTxt=&amp;quot;una&amp;quot;; break;&lt;br /&gt;
		case 14: HoraTxt=&amp;quot;dues&amp;quot;; break;&lt;br /&gt;
		case 15: HoraTxt=&amp;quot;tres&amp;quot;; break;&lt;br /&gt;
		case 16: HoraTxt=&amp;quot;quatre&amp;quot;; break;&lt;br /&gt;
		case 17: HoraTxt=&amp;quot;cinc&amp;quot;; break;&lt;br /&gt;
		case 18: HoraTxt=&amp;quot;sis&amp;quot;; break;&lt;br /&gt;
		case 19: HoraTxt=&amp;quot;set&amp;quot;; break;&lt;br /&gt;
		case 20: HoraTxt=&amp;quot;vuit&amp;quot;; break;&lt;br /&gt;
		case 21: HoraTxt=&amp;quot;nou&amp;quot;; break;&lt;br /&gt;
		case 22: HoraTxt=&amp;quot;deu&amp;quot;; break;&lt;br /&gt;
		case 23: HoraTxt=&amp;quot;onze&amp;quot;; break;&lt;br /&gt;
		case 0: HoraTxt=&amp;quot;dotze&amp;quot;; break;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	switch(Minuts)&lt;br /&gt;
	{&lt;br /&gt;
		case 0: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; en punt&amp;quot;; break;&lt;br /&gt;
		case 1: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i un minut&amp;quot;; break;&lt;br /&gt;
		case 2: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i dos minuts&amp;quot;; break;&lt;br /&gt;
		case 3: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i tres minuts&amp;quot;; break;&lt;br /&gt;
		case 4: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i quatre minuts&amp;quot;; break;&lt;br /&gt;
		case 5: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i cinc minuts&amp;quot;; break;&lt;br /&gt;
		case 6: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i sis minuts&amp;quot;; break;&lt;br /&gt;
		case 7: Txt = &amp;quot;Són mig quart de &amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 8: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i vuit minuts&amp;quot;; break;&lt;br /&gt;
		case 9: Txt = &amp;quot;Són &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; i nou minuts&amp;quot;; break;&lt;br /&gt;
		case 10: Txt = &amp;quot;Falten cinc minuts per un quart &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 11: Txt = &amp;quot;Falten quatra minuts per un quart &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot; &amp;quot;; break;&lt;br /&gt;
		case 12: Txt = &amp;quot;Falten tres minuts per un quart &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 13: Txt = &amp;quot;Falten dos minuts per un quart &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 14: Txt = &amp;quot;Falta un minut per un quart &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 15: Txt = &amp;quot;Són un quart &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 16: Txt = &amp;quot;Són un quart i un &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 17: Txt = &amp;quot;Són un quart i dos &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 18: Txt = &amp;quot;Són un quart i tres &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 19: Txt = &amp;quot;Són un quart i quatre &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 20: Txt = &amp;quot;Són un quart i cinc &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 21: Txt = &amp;quot;Són un quart i sis &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 22: Txt = &amp;quot;Són un quart i mig &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 23: Txt = &amp;quot;Falten set minuts per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 24: Txt = &amp;quot;Falten quatre minuts per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 25: Txt = &amp;quot;Falten cinc minuts per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 26: Txt = &amp;quot;Falten quatre minuts per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 27: Txt = &amp;quot;Falten tres minuts per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 28: Txt = &amp;quot;Falten dos minuts per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 29: Txt = &amp;quot;Falta un minut per dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 30: Txt = &amp;quot;Són dos quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 31: Txt = &amp;quot;Són dos quarts i un &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 32: Txt = &amp;quot;Són dos quarts i dos &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 33: Txt = &amp;quot;Són dos quarts i tres &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 34: Txt = &amp;quot;Són dos quarts i quatra &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 35: Txt = &amp;quot;Són dos quarts i cinc &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 36: Txt = &amp;quot;Són dos quarts i sis &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 37: Txt = &amp;quot;Són dos quarts i mig &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 38: Txt = &amp;quot;Falten set minuts per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 39: Txt = &amp;quot;Falten sis minuts per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 40: Txt = &amp;quot;Falten cinc minuts per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 41: Txt = &amp;quot;Falten quatre minuts per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 42: Txt = &amp;quot;Falten tres minuts per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 43: Txt = &amp;quot;Falten dos minuts per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 44: Txt = &amp;quot;Falta un minut per tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 45: Txt = &amp;quot;Són tres quarts &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 46: Txt = &amp;quot;Són tres quarts i un &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 47: Txt = &amp;quot;Són tres quarts i dos &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 48: Txt = &amp;quot;Són tres quarts i tres &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 49: Txt = &amp;quot;Són tres quarts i quatre &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 50: Txt = &amp;quot;Són tres quarts i cinc &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 51: Txt = &amp;quot;Són tres quarts i sis &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 52: Txt = &amp;quot;Són tres quarts i mig &amp;quot;+Art1+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 53: Txt = &amp;quot;Falten set minuts per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 54: Txt = &amp;quot;Falten sis minuts per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 55: Txt = &amp;quot;Falten cinc minuts per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 56: Txt = &amp;quot;Falten quatre minuts per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 57: Txt = &amp;quot;Falten tres minuts per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 58: Txt = &amp;quot;Falten dos minuts per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
		case 59: Txt = &amp;quot;Falta un minut per &amp;quot;+Art2+&amp;quot;&amp;quot;+HoraTxt+&amp;quot;&amp;quot;; break;&lt;br /&gt;
	}&lt;br /&gt;
	return Txt&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===script bash: hora_catalana.sh===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/iconv -f UTF-8 -t ISO-8859-15 -o hora_catalana_tts_iso-8859-15.scm hora_catalana_tts.scm&lt;br /&gt;
festival -b hora_catalana_tts_iso-8859-15.scm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Partim del script ''hora_catalana_tts.scm'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(voice_upc_ca_ona_hts)(SayText &amp;quot;Són tres quarts i un de cinc&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que selecciona la veu catalana escollida, i informa el que '''festival''' haurà de dir.&lt;br /&gt;
&lt;br /&gt;
Però el script ha de convertir aquest fitxer al format ''ISO-8859-15'', que és el que entén festival.&lt;br /&gt;
&lt;br /&gt;
Finalment cridem a '''festival''' per fer sonar el missatge.&lt;br /&gt;
&lt;br /&gt;
Funciona tant en el portàtil com a la RPi3, doncs la instal·lació de Festival és directa.&lt;br /&gt;
=Mòdul de MagicMirror: MMM-HoraCatalana=&lt;br /&gt;
Tot això ve perquè vull fer un mòdul per al Magic Mirror que faci sonar l'hora catalana. El meu Magic Mirror el vull dotar amb les funcionalitats STT i TTS (reconeixement de veu, i parla, tot en català).&lt;br /&gt;
(TBD)&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, maig 2020 (COVID-19)&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>