NONO

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Bonjour

Message par Backup »

meganet a écrit :Bonjour,
vue que dans la v4 il n'y à rien de plus, pourquoi tu n'utilise pas la dll FMOD?
Emplus elle est multi pladeforme.
Et après pas mal de temps, j'utilise cette dll sans lib et sans problème!
Donc franchement, elle dispose de tout ce qu'il te faut pour nono.
BN @+++.
au debut Nono utilisait Cette Dll....

mais probleme elle n'est pas libre !! j'ai pas envie d'avoir a payer une licence
pour que mon soft genere du son, alors que le PureBasic peut le faire ...!!
si un jour... je voulais le commercialiser ... (on peut rever non ? :D)
bref ! je me sentais les mains Lié avec cette Dll , (bien que je la trouve super :D )

voila c'est tout bete hein ? :d
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

retour de Nono :) Nono2009

seulement en librairie purebasic !!

a installer dans votre dossier de librairies de pureBasic

a telecharger ici : http://michel.dobro.free.fr/download.php?view.24

ps :Nono n'est plus bridé dans le temps ;)


l'avantage de Nono c'est qu'il n'est point besoin de récupérer une voix sur internet, ou un quelconque moteur de synthèse vocal , pour qu'il parle Nono contient tout !! :)

de plus vu qu'il est en librairie , il est facilement intégrable dans vos programme , sans ajout de quelque dll ou fichier que ce soit ! :)

inconvénient :
vos programme pèseront 4 Mega de plus .... c'est le poid de Nono

et aussi , c'est pas de la synthese pro, mais bon je fais ça tout seul,
j'ai vu sur internet, que la concurence, c'etait .... des universités, et des centres de recherche !! .... :lol: , bon toute proportion gardée, dites moi ce que vous en pensez ...
je prépare une future version, qui devrai etre pas mal .. :)
je travaille surtout sur la fluidité, avant d'attaquer les problemes de dictions éventuel de certains mots

exemple d'appel :

Code : Tout sélectionner

; nono(A$, B, C )
; A$: phrase_a_dire$
; B: panoramique de : 0=gauche a 200=droite : 100=Centre
; C: si 0=affiche la tete , si 1=n'affiche pas la tete (moins de temps machine pris) 

; exemple :
phrase.s="coucou, je m'appelle Nono , et je suis enchanté de pouvoir vous parler "
nono(phrase.s,100,1)
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Message par PAPIPP »

Sur nono2009 j'ai une erreur:
"le fichier Tampon ne peut être ouvert (nonoparle)
prévenir Dobro en donnant le mot" ??

Code : Tout sélectionner

; exemple d'appel

; nono(A$, B, C )
; A$: phrase_a_dire$
; B: panoramique de : 0=gauche a 200=droite : 100=Centre
; C: si 0=affiche la tete , si 1=n'affiche pas la tete (moins de temps machine pris)

; exemple :
phrase.s = "coucou, je m'appel Nono , et je suis enchanté de pouvoir vous parler "
nono(phrase.s, 100, 1)
Dans tous le cas Merci et Bravo Dobro pour Speak
Je n'ai pas trouvé la source de nono parcontre j'ai celui de Speak
Voici un exemple avec choix de la personne et
variation sur Volume et Vitesse de Speak

Code : Tout sélectionner

voix$ = getvoix()  ; on recupere le nombre et le nom des voix installé
; getvoix() retourne une chaine "nbr_de_voix,voix1$,voix2$,voix3$........ etc "
Dim t_v.s(10)
Debug voix$
nombre.i = Val(StringField(voix$, 1, ",")) ; recupere le nombre de voix installé (premier element de la chaine)
voix$ = Right(voix$, Len(voix$)-2) ; on retire le nombre de voix, et sa virgule de la liste des noms de voix
vi$ = ""
Speak(vo$, "Bonjour, comment allez vous ?", 100, -5) ; Speak2 (Text$,Volume,vitesse de diction)
t_v(0) = Str(nombre)
;**************************************************************************************************************************
If OpenWindow(0, 0, 0, 300, 100, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ComboBoxGadget(0, 10, 10, 290, 20, #PB_ComboBox_Editable)
EndIf

;**************************************************************************************************************************
For i = 1 To nombre ;
  Debug StringField(voix$, i, ",") ; ressort tout les noms des voix installées
  t_v(i) = StringField(voix$, i, ",")
  AddGadgetItem(0, -1, t_v(i))
  
Next i
mgg$ = gg$
Repeat
  gg$ = GetGadgetText(0)
Until (WaitWindowEvent() = #PB_Event_CloseWindow) And gg$<>mgg$

Debug gg$

#stpx = 20
For vol.i = -100 To 100 Step #stpx
  For vit.i = -100 To 100 Step #stpx
    chx.i = Abs(vol*vit)
    ch.i = (chx%(nombre))
    If ch = 0 : ch + 1 : EndIf
    vo$ = t_v(ch) ; ou l'on donne directe le nom de virginie
    text$ = "Bonjour " + t_v(ch) + " , Volume , " + Str(Vol) + " , vitesse , " + Str(vit)
    ;Debug formn(ch) + " " + forms(gg$) + " , " + forms(text$)
    Speak(gg$, text$, Vol, vit) ; Speak2 (voix$,Text$,Volume,vitesse de diction)
    
    ;     Debug formn(ch) + " " + forms(vo$) + " , " + forms(text$)
    ;     Speak(vo$, text$, Vol, vit) ; Speak2 (voix$,Text$,Volume,vitesse de diction)
    
  Next
Next

A+ et encore Merci
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

merci pour ton retour :)

quelqu'un d'autre a ce probleme ?

bon je vais prendre mon temps pour regarder ça ! ..

c'est quand meme curieux qu'un prg pure basic puisse tourner sur certaines
machines , et pas dautres !! :?


Merci encore pour ton retour d'infos :) et ton exemple
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bon bah comme dab, pour moi jamais rien ne marche :?
J'ai fait "tout ça que tu m'as dit"

J'ai posé le nono dans son ecrin
"PureBasic\v4.30\PureLibraries\UserLibraries"
Et y m'a pas dit un mot :cry:

Peut etre il aime pas W2000 ou la v4.30 :roll:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit :
Peut etre il aime pas W2000 ou la v4.30 :roll:
si je met en téléchargement une lib,
c'est qu'elle tourne chez moi en 4.30 !! c'est un minimum :)
je suis passé définitivement en v4.30 depuis l'officiel

il n'y a aucune raison que cela ne fonctionne pas sous 2000 , je n'utilise pas d'Api !!

mais par contre, je sais qu'en mode debug lorsque je test ma lib_source
(avant de faire la lib donc... en mode procedure, si tu veux ,)
que j'ai un bug sur la fonction FileSeek () qui refuse un parametre negatif !!

ce qui n'etais pas le cas avant !!

bref, apparemment on ne peux plus demander a la tete de lecture de reculer !! (message d'erreur qui le precise"pas de chiffre negatif")

je vais vérifier ce point en detail , pour mettre en exergue un bug éventuel de purebasic !!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon apres ce faux depart revoici ma lib

elle a un peu grossi 13 mega hum !!

http://michel.dobro.free.fr/download.php?view.24

j'ai du faire marche arriere sur le procedé employé, mais finalement je ne regrette pas, la diction est carrement mieux maintenant !! :)
et plus de fichier tampon ecris sur le disque, du coup plus de bug ! :D

pour ceux qui auront le courage de la telecharger et de la tester :)

j'aimerai bien que fred puisse mettre le mp3 sur la commande sound() !

parce que jongler avec movie() qui n'a rien a voir niveau syntaxe avec sound() c'est pas évident :)

qu'il ne parle pas de droit etc... si l'on peut lire le mp3 avec movie() pourquoi pas avec sound ? 8O


j'ai essayé aussi avec les ogg , mais alors c'est lent a charger les ogg !!

bref , je suis reveu au wav , c'est pourquoi la lib fait 13 Mo

lorsque purebasic saura gerer mieux le son , j'arrangerai a ce moment la :)
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

ouahhhhh c'est méga génial ta lib Dobro bravo :wink:

bon la voix est un peut robotique mais le résultat est super cool.





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

merci :)

si toutefois ,il avait du mal a dire un mot , n'hésite pas a me dire lequel
j'arrangerai ça,dans une futur version :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour info Nono2009 c'est

c'est 38233 lignes de codes !!!

1506 sons (phonèmes) qui compose la voix

a lui seul l'analyseur syntaxique fait 20494 ligne de code !! :lol:

lorsque je charge la total dans japbe, c'est souvent qu'il plante !!
a cause de la taille ...

j'ai separé par "xinclude" l'analyseur du moteur de nono
pour etre serein avec l'éditeur Japbe
cependant, malgres cela, j'ai souvent un gros freeze de l'éditeur ;)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@Dobro

Je court-circuite un tout petit peu (désolé). Je viens direct du tout premier post où tu parle d'une absence d'analyse grammaticale.

Voici un exemple de code gérant partiellement les accords dans un groupe nominal.

Le coeur du programme se trouve en fin de listing, après la ligne de commentaire "Test".

Il y a la datasection qui stocke les noms (un nom féminin, se voit rajouter le signe §)
Il y a la sélection du nom, puis l'affichage du GN en fonction de trois options : défini ou non, pluriel ou non, prépositionnel ou non

Code : Tout sélectionner

#Masc = 1
#Defini = 2
#Pluriel = 4
#Prep = 8 ; à

;Type Mot
#NomCommun = 8
#AdjQual = 16

Structure MotInfo
   Type.I
   Ctn.S
   Genre.I
   
   Attr.I
EndStructure

   Global NewList Mot.MotInfo()

Procedure.S DvpAlpha(Niveau)
   Protected Result.S
   Protected I.I
   Protected Niv.I
   For I = 1 To Len(Mot()\Ctn)
      If Mid(Mot()\Ctn, I, 1) = "["
         Niv + 1
         Goto StartAlpha
      EndIf
      If Mid(Mot()\Ctn, I, 1) = "]"
         Niv - 1
         Goto StartAlpha
      EndIf
      If Niv <= Niveau
         Result + Mid(Mot()\Ctn, I, 1) 
      EndIf
StartAlpha:
   Next I 
   ProcedureReturn Result
EndProcedure

Procedure.I VoyPreTest(Lettre.S)
   Protected Result.I
   Select LCase(Lettre)
      Case "a", "e", "i", "o", "u", "é", "è", "ê", "à", "â", "î", "û", "ô", "ù"
         Result = 1
   EndSelect
   ProcedureReturn Result
EndProcedure

Procedure.S Article()
   Protected Result.S
   Attr = Mot()\Attr
   If Attr & #Defini
      If Attr & #Pluriel
         If Attr & #Prep
            Result = "aux"
         Else
            Result = "les"
         EndIf
      Else
         If Attr & #Masc
            If Attr & #Prep
               Result = "au"
            Else
               Result = "le"
            EndIf
         Else
            If Attr & #Prep
               Result = "à la"
            Else
               Result = "la"
            EndIf
         EndIf
         If VoyPreTest(Left(Mot()\Ctn, 1) )
            If #Prep
               Result = "à l'"
            Else
               Result = "l'"
            EndIf
         EndIf
      EndIf
   Else
      If Attr & #Pluriel
         Result = "des"
      Else
         If Attr & #Masc
            Result = "un"
         Else
            Result = "une"
         EndIf
      EndIf
      If Attr & #Prep
         Result = "à " + Result
      EndIf
   EndIf
   If Right(Result, 1) <> "'"
      Result + " "
   EndIf
   ProcedureReturn Result
EndProcedure 

Procedure.S Nom()
   Protected Result.S
   If Mot()\Attr & #Pluriel
      If Right(Mot()\Ctn, 2) = "au"
         Result = Mot()\Ctn + "x"
      Else
         Result = Mot()\Ctn + "s"
      EndIf
      If Right(Result, 3) = "als"
         Result = ReplaceString(Result, "als", "aux")
      EndIf
   Else
      Result = Mot()\Ctn
   EndIf
   ProcedureReturn Result
EndProcedure

Procedure.S GN(Nombre.I)
   Protected Result.S
      Mot()\Attr = Mot()\Genre | Nombre
      Result = Article() + Nom()
   ProcedureReturn Result
EndProcedure

   Repeat
      AddElement(Mot() )
      Read.S Mot.S
      If Left(Mot, 3) = "/!\"
         If Len(Mot) = 3
            Break
         EndIf
         Select Right(Mot, Len(Mot) - 3)
            Case "Nom"
               Type = #NomCommun
            Case "Adj"
               Type = #AdjQual 
         EndSelect      
      EndIf
      Mot()\Type = Type
      If Right(Mot, 1) <> "§"
         Mot()\Genre = #Masc
      Else
         Mot = Left(Mot, Len(Mot) - 1)
      EndIf
      Mot()\Ctn = Mot
   ForEver

;- Test
   
DataSection
Data.S "/!\Nom"
Data.S "bateau", "cheval", "pont", "voile§"
Data.S "/!\"
EndDataSection

   SelectElement(Mot(), 2)
   Debug GN(#Pluriel|#Defini)

   SelectElement(Mot(), 1)
   Debug GN(#Pluriel|#Prep)

   SelectElement(Mot(), 4)
   Debug GN(0)

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ollivier a écrit :@Dobro

Je court-circuite un tout petit peu (désolé). Je viens direct du tout premier post où tu parle d'une absence d'analyse grammaticale.
8O tu court circuit un petit peu 8O

le premier post date d'octobre 2004 !!
un peu plus de 4 ans !! :lol:

depuis longtemps maintenant Nono est équipé d'un analyseur syntaxique
même que dans le post precedent , j'ai signalé qu'il faisait

20494 ligne de codes !! ;)


tu fait dire ce que tu veux a Nono , il est en principe capable de le dire

il lit donc grace a son analyseur syntaxique tout ce que tu as ,a lui faire dire !!

il faut qu'il tienne compte de tout !!

les chameaux , ou les chats mot

les tortues, ou le tords, tue !

etc !!!


les mange, venge, range, etc ...
il faut qu'il les interprete comme il faut !

cela va bien au dela de ton exemple :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

au fait j'ai oublié un petit bug dans nono , mais tant mieux :D

j'ai pas bridé la vitesse de diction a 50 comme je le croyais
parceque j'ai merdé le code , mais tant mieux parceque je me suis rendu compte que sur des pc plus lent que le miens genre un pc a 1,6 Ghz
50 c'est pas asséz , et ça fait parler nono avec une saccade vraiment importante ...

donc si vous avez un pc < a 2Ghz n'hesitez pas a mettre 70 a la lace de 50 :)

attention un chiffre trop grand empechera nono de parler :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Dobro a écrit :au fait j'ai oublié un petit bug dans nono , mais tant mieux :D

j'ai pas bridé la vitesse de diction a 50 comme je le croyais
parceque j'ai merdé le code , mais tant mieux parceque je me suis rendu compte que sur des pc plus lent que le miens genre un pc a 1,6 Ghz
50 c'est pas asséz , et ça fait parler nono avec une saccade vraiment importante ...

donc si vous avez un pc < a 2Ghz n'hesitez pas a mettre 70 a la lace de 50 :)

attention un chiffre trop grand empechera nono de parler :)
Le plus censé dans un programme que tu vas diffuser serait justement de calculer la vitesse de diction par rapport à la vitesse du proce. :)
J'ai pas encore testé ta lib mais je commenterai lorsque ce sera fait :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

c'est vachement subjectif , ç'est vrais que ce serait bien de pourvoir le faire

mais voila, je crois qu'a moins de disposer de tout les type de proc, c'est infaisable !!
sur un proc type P4 a 1,6ghz cela peut paraitre lent
et super rapide que un proc core duo ou quatro cadencé a la meme vitesse :)
Répondre