Reloj de voz

Un lugar donde charlar en castellano
Post Reply
User avatar
Fernando Perez
Posts: 378
Joined: Mon Feb 15, 2021 10:09 pm
Location: Santander (Spain)
Has thanked: 195 times
Been thanked: 269 times

Reloj de voz

Post by Fernando Perez »

Hola a todos.
Estoy probando el nuevo sistema incorporado en Annex32 1.43.2 para convertir texto a voz mediante el uso de la API de:
http://www.voicerss.org.
He usado un módulo DAC (Convertidor digital a analógico) PCM5102a, adquirido en Aliexpress por 3 €:
image.png
y un ESP32 conectado según explica Cicciocb en su fichero de ayuda:
image.png
con la salvedad de que he alimentado el DAC a 5 voltios en lugar de 3,3 y unido el terminal SCK a masa en lugar de dejarlo al aire, para evitar inestabilidades observadas en una radio por Internet que también estoy montando.

El registro en voicerss.org es gratuito para una utilización de su API de conversión de hasta 350 veces al día con un máximo de 100 Kb por frase, creo que más que suficiente para un uso normal.

Mi código actual es este:

Code: [Local Link Removed for Guests]

DIM hora$(11) = "una","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce"
wlog "Reloj hora a voz en funcionamiento"
timer0 1000, diHora
wait

'======
dihora:
'====== 
s = val(right$(time$, 2)) : if s <> 0 then return ' Si los segundos no son cero, regresa
m = val(mid$(time$, 4, 2)): if (m MOD 5) <> 0 then return ' Si los minutos no son multiplo de cinco, regresa
h = val(left$(time$, 2)) ' h contiene hora actual
p = (h*100) + m ' Periodo del día

' HORA -------------------
if h > 12 then h = h - 12
if h = 0 then h = 12
if m>30 then h = h + 1
if h = 13 then h = 1
if h=1 then frase$ = "Es la" else frase$ = "Son las"
frase$ = frase$ + hora$(h-1) + space$(1) ' El primer elemento de una matriz tiene indice cero

' MINUTOS ----------------
if m>=35 then frase$ = frase$ + "menos"
if (m>0) AND (m<35) then frase$ = frase$ + "y"

select case m
  case 0 : m$="en punto"
  case 5, 55 : m$="cinco"
  case 10, 50 : m$="diez"
  case 15, 45 : m$="cuarto"
  case 20, 40 : m$="veinte"
  case 25, 35 : m$="veinticinco"
  case 30 : m$="media"
end select

frase$ = frase$ + space$(1) + m$
wlog frase$
' PERIODO ----------------
if (p>1155) AND (p<1435) then p$="del" else p$="de la"
frase$ = frase$ + space$(1) + p$
 
select case p
  case 0 to 30 : p$ = "medianoche"
  case 35 to 555 : p$ = "madrugada"
  case 600 to 1155 : p$ = "mañana"
  case 1200 to 1430 : p$ = "mediodía"
  case 1435 to 1955 : p$ = "tarde"
  case 2000 to 2355 : p$ = "noche"
end select

frase$ = frase$ + space$(1) + p$

api$ = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  ' Tu API KEY de tu cuenta en voicerss.org
PLAY.SETUP 1, 16
PLAY.voiceRSS frase$, "es-es&v=Luna", api$

return

'PLAY.voiceRSS frase$, "es-mxs&v=Juana", api$
'PLAY.voiceRSS frase$, "es-es&v=Luna", api$
'PLAY.voiceRSS frase$, "es-mx&v=Silvia", api$
'PLAY.voiceRSS frase$, "es-es&v=Sofia", api$
'PLAY.voiceRSS frase$, "es-mx&v=Teresa", api$
'PLAY.voiceRSS frase$, "es-es&v=Camila", api$
'PLAY.voiceRSS frase$, "es-mx&v=Jose", api$
'PLAY.voiceRSS frase$, "es-es&v=Diego", api$
En el programa he comentado las distintas voces que ofrece actualmente voiceRSS en español. Basta con sustituir mi favorita, Luna, por la que prefieras.
Si necesitas alguna aclaración, dímelo.
You do not have the required permissions to view the files attached to this post.
User avatar
ETIPatagonia
Posts: 6
Joined: Thu Feb 18, 2021 11:49 pm
Location: Patagonia Argentina
Has thanked: 5 times
Been thanked: 4 times
Contact:

Re: Reloj de voz

Post by ETIPatagonia »

Excelente trabajo Fer!
Post Reply