Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 10/05/2013, à 04:35

temps

[résolu] Nouveau problème de trie avec des switch en langage C

Bonjour,
Je reviens avec un problème de trie avec des switch c'est une évolution du premier problème rencontré que j'ai résolu.
Pour rappel nous avons une suite  de valeurs qui donnent des sorties différentes selon comment elles sont associées, parfois une valeur suffit, selon la valeur lu parfois il faut aller lire une ou deux valeurs après pour savoir la sortie.
La solution que j'ai proposé et qui marchait avant que je développe tous les cas, est que je mettais en mémoire à l'aide d'un switch une valeur actif qui me permettait de faire le trie.

Quand j'ai créé le cas valeur 1 suivit de la valeur 2 donne et ensuite valeur 2 suivit de la valeur 1 donne, le cas 1 passe par dessus le cas 2 dans le switch, normalement cela ne devrait pas gêner, mais quand je teste je m’aperçois que si j'utilise cet événement aux milieux d'autres événements tout va bien,  si je l'utilise seul tout va bien, mais si je boucle l'événement 1, l'événement 2 s'introduit ! Alors même que nous devrions être dans le switch actif actionné et l'événement 2 ne devrait pas apparaitre.
Est-ce que quelqu'un a une ide de pourquoi ? Ou comment mettre une sécurité pour qu'une sortie autre ne se glisse dans celle désirée ?

Cordialement

Dernière modification par temps (Le 12/05/2013, à 21:14)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#2 Le 10/05/2013, à 07:19

telliam

Re : [résolu] Nouveau problème de trie avec des switch en langage C

J'ai pas tout compris. Ma la création spontanée n' existe pas. Tu as un bug. Px tu pister ton code et des exemples de qd ça foire


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 11/05/2013, à 00:47

temps

Re : [résolu] Nouveau problème de trie avec des switch en langage C

Merci pour la réponse.
J'ai posté juste après avoir modifier mon code pour essayer de le rendre plus claire, en essayant de regrouper les différents niveaux de switch par lettre (qui sont mes variables).
Je viens de relire le code et j'avais placé un case 13 à la place d'un case 12 dans le switch qui permet de gérer les variations de cas possibles (l'un est le premier niveau de dérivée d'une lettre, l'autre son deuxième niveau).
En fait le trie par switch fonctionne très bien, c'était une faute d’inattention, mais pour mieux exprimer voici les deux bouts de code qui mal liés m'avaient posé problème

/***************************************************************************************************************************/
	case 8 : /*lettre i et ses sons dérivés de premier ordre*/
	actif = 12;
	break;/**fin lettre i */			
/***************************************************************************************************************************/

On voit bien que pour appeler la lettre i en dessous c'est le cas 12, mais avant modification pour rendre mon code plus visible, c'était le cas 13 et sur le code au dessus j'avais laissé actif = 13, en mettant comme indiqué j'ai fait disparaître le son "é" qui apparaissait comme par miracle dès qu'on avait un d après le "i" et que j'avais accordé à tord au maillage des switch

/***************************************************************************************************************************/
/***************************************************************************************************************************/
case 12 :/********switch actif 12 developpement des son i  *********************/
actif = 1;
	switch (assemblage1) {

/***debut son ie vers eau dérivée d'ordre 2****/
	case 4 :
	actif = 13;
	break;/**fin de la dérivée première lettres ie*/

/***************************************************************************************************************************/

/***debut son in*****/
	case 13 :

		fichierjo1 = NULL;
  		fichierjo1 = fopen("in.jo", "rb"); 
  		if(fichierjo1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n","in.jo");
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab"); 
  		if(fichiertampon1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		} 
		if (fichierjo1 != NULL)
		{
		if (fichiertampon1 != NULL)
		{
		abadie = fgetc(fichierjo1); 
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL; 
		actif = 1;

	break;/******* fin son in  ****************/
/***************************************************************************************************************************/
	default :/****son i seul*********************/
		fichierjo1 = NULL;
  		fichierjo1 = fopen(ja9, "rb"); 
  		if(fichierjo1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",ja9);
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab"); 
  		if(fichiertampon1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		} 
		if (fichierjo1 != NULL)
		{
		if (fichiertampon1 != NULL)
		{
		abadie = fgetc(fichierjo1); 
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL; 
		actif = 1;
		goto remonteswitch ;
		break;
	}/* fin switch (assemblage1)*/


break;/**fin du cas 2**/
break;/******************************************bloc  fin derivé du son i ****************************/
/***************************************************************************************************************************/
/***************************************************************************************************************************/
case 13 :/********switch actif 13 dérivée de deuxième ordre des son ie  **************************************/
actif = 1;
	switch (assemblage1) {

/***debut son ied ier****/
	case 3 :
	case 17 :

		fichierjo1 = NULL;
  		fichierjo1 = fopen(ja9, "rb"); 
  		if(fichierjo1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",ja9);
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab"); 
  		if(fichiertampon1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		} 
		if (fichierjo1 != NULL)
		{
		if (fichiertampon1 != NULL)
		{
		abadie = fgetc(fichierjo1); 
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL; 
		fichierjo1 = NULL;
  		fichierjo1 = fopen("ai.jo", "rb"); 
  		if(fichierjo1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n","ai.jo");
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab"); 
  		if(fichiertampon1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		} 
		if (fichierjo1 != NULL)
		{
		if (fichiertampon1 != NULL)
		{
		abadie = fgetc(fichierjo1); 
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL; 
		actif = 1;

	break;/******* fin son ied ier  ****************/
/***************************************************************************************************************************/
/***debut son ien****/
	case 13 :
		fichierjo1 = NULL;
  		fichierjo1 = fopen(ja9, "rb"); 
  		if(fichierjo1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",ja9);
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab"); 
  		if(fichiertampon1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		} 
		if (fichierjo1 != NULL)
		{
		if (fichiertampon1 != NULL)
		{
		abadie = fgetc(fichierjo1); 
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL; 
		fichierjo1 = NULL;
  		fichierjo1 = fopen("in.jo", "rb"); 
  		if(fichierjo1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n","in.jo");
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab"); 
  		if(fichiertampon1 == NULL){ 
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		} 
		if (fichierjo1 != NULL)
		{
		if (fichiertampon1 != NULL)
		{
		abadie = fgetc(fichierjo1); 
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL; 
		actif = 1;

	break;/******* fin son ien  ****************/

/***************************************************************************************************************************/
	default :/****son ie seul****************/
		fichierjo1 = NULL;
  		fichierjo1 = fopen(ja9, "rb");
  		if(fichierjo1 == NULL){
    		printf("Ce fichier ne va pas %s\n",ja9);
    		exit(1);
		}
  		fichiertampon1 = fopen(construit, "ab");
  		if(fichiertampon1 == NULL){
    		printf("Ce fichier ne va pas %s\n",construit);
    		exit(1);
  		}
		if (fichierjo1 != NULL)	{
		if (fichiertampon1 != NULL){
		abadie = fgetc(fichierjo1);
		while (abadie != EOF){
		fwrite(&abadie,1,sizeof(regle),fichiertampon1);
		abadie = fgetc(fichierjo1);
		}
		}
		}
		fclose(fichiertampon1), fichiertampon1 = NULL;;
		fclose(fichierjo1), fichierjo1 = NULL;
		actif = 1;
		goto remonteswitch ;
		break;
	}/* fin switch (assemblage1)*/


break;/**fin du cas 2**/
break;/*********************bloc  fin switch actif 13 dérivée de deuxième ordre des son ie ****************************/

Cordialement

Dernière modification par temps (Le 11/05/2013, à 00:54)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#4 Le 11/05/2013, à 08:18

telliam

Re : [résolu] Nouveau problème de trie avec des switch en langage C

C'est pas très sain comme code. Tu aurais du faire un système qui te retourne une clé en fonction des caractères et de leurs positions et faire un switch case sur cette cle


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#5 Le 12/05/2013, à 21:11

temps

Re : [résolu] Nouveau problème de trie avec des switch en langage C

Bonjour,
Oui, mais le traitement aurai été beaucoup plus lourd, car il prendrait en charge des cas imaginaires qui n'existent pas dans la réalités, et ajouterait des règles à la prononciation de la langue française qui en possède déjà bien assez. L'important n'est pas la position dans le mot, l'important est l'environnement direct qui indique quel son prononcer.
J'ai écrit le code sous cette forme car l'objectif final est d'avoir dans la bibliothèque que les sons de base des voyelles (séquences de fronts) et aussi des fausses consonnes comme le "s", ensuite de modifier le début du son de base pour obtenir les différentes consonnes directrices. L’écriture en langage C de la langue française  est à peu près au même niveau de facilités que celle de l'écriture des segments de fronts acoustiques, mais possède un avantage certain, c'est la pratique quotidienne qui nous indique comment associer les lettres pour avoir tel ou tel son.
Je poste en résolu, car je viens de m’apercevoir que j'avais oublié.
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#6 Le 13/05/2013, à 11:40

telliam

Re : [résolu] Nouveau problème de trie avec des switch en langage C

Mais tu sais, il y a deja espeak qui marche tres bien


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#7 Le 13/05/2013, à 18:26

temps

Re : [résolu] Nouveau problème de trie avec des switch en langage C

Merci pour l'info, je vérifierai, mais j'ai un doute, car quand j'ai démarré le projet il y a presque trois ans, je n'ai rencontré que des croyances étranges et des codes introuvables qui en plus ne permettaient pas de modifier facilement les sons.
Cela fait trois ans que je postes sur les lois des sons, peut-être même que cela a aidé d'autres projets, mais je suis sure que ma technique de modélisation est à des années lumières de ce que j'ai trouvé quand j'ai regardé, car le reste est construit sur des croyances fausses, donc impossible de rivaliser avec le vrai que je présente.

Est-ce que  espeak arrive à écrire une lettre avec 72 octets ? avant compression ? car le future est à la technologie bas cout, faible consommation, intégrable sous la peau ou en diverses lieux. Si espeak l'executable pèse plus de 30 ko, et possède une bibliothèque de plus de quelque centaines de Ko, il n'existe déja plus, il n'aura été qu'une étape de plus dans la construction d’incohérences. Car ça fait plus de trois ans que j'indique comment se construisent les sons même si le monde reste sourd et continue à parler fréquences, fouretout ou foureriez et autres.

De plus derrière il y a beaucoup plus, il y a un synthétiseur de musique, il suffit de remplacer les sons dans la base et chaque texte devient une mélodie.

De plus, de plus, si mon appel de fond aboutie, il y a la carte audio linux, la carte audio linux couplé à un casque neuronal. Est-ce que espeak ouvre la porte aux découvreurs ? ou la ferme-t-elle ?

Quand on utilise mon synthétiseur vocal, qu'on assemble ses fronts pour créer le son de sa lettre, ce n'est pas un enregistrement trafiqué, c'est une voix toute droit sortie de notre imagination est-ce que  espeak  apporte ça ?

Cordialement

Dernière modification par temps (Le 13/05/2013, à 19:09)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#8 Le 15/05/2013, à 08:44

telliam

Re : [résolu] Nouveau problème de trie avec des switch en langage C

Je connais peu tes travaux mais je m'intéresse un peu a espeak .
1er point : dire que ta modélisation est a des années lumière de ce qui existe actuellement, est je trouve assez presomptueux de ta part. vu le nombre de chercheur/ ingénieur qui ont bossé sur la synthèse vocale c'est assez gonflé de sortir ce genre de phrase:) De plus tu juges ton propre boulot, tu ne px donc pas etre objectif. 
Et lire que les sons sont des fréquences et autre fouretout... ayant une formation scientifique, c'est le genre de phrase qui étonne, limite qui me pique les yeux smile Surtout que ton logiciel utilise une carte son qui est basé justement sur la production de fréquence pour générer les sons.

Pour ce qui est de la taille des librairies, qq ko c'est pas tres grave, vu la taille des composants mémoire (et crois moi je m'y connais un peu, je travaille dans l'informatique embarqué).
ensuite comparons ta librairie et espeak :
- espeak est multi-langue
- ta lib n'est que pour le français.
- espeak est stable et maintenu par plusieurs développeurs
- Pour avoir vu le code de ta lib, elle n'est pas maintenable.
- espeak permet de rajouter des sons, phoneme ou meme une nouvelle langue avec des fichiers de configuration.
- espeak n'est qu'un outil, il ouvre et ne ferme aucune porte. ça dépend de l'imagination de son utilisateur. et d'ailleurs, je vois pas en quoi ta lib ouvre ou feme une quelconque porte.
Pour ton dernier point, je ne sait pas si la facon dont est généré le son est important pour l'utilisateur.

Ne prends pas ça pour une attaque mais comme une critique constructive, je trouve remarquable ton acharnement dans ton projet et je vx volontiers etre testeur pour comparer a espeak.


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#9 Le 15/05/2013, à 12:22

temps

Re : [résolu] Nouveau problème de trie avec des switch en langage C

"etre testeur" sont des mots qui font plaisir, jusqu'à maintenant tous ceux qui ont testés ont validés mes affirmations mêmes si celles-ci ne correspondent pas aux croyances.
Détaillé mon écrit ne serait qu'un discours portant à polémiques, il suffit des tester et voir si j'affirme à tord ou à raison.
Je termine d'expliquer les segments de fronts de chaque lettre, ensuite je m'occuperai de faire une bibliothèque ou tous les fronts de lettres se lient bien entre eux, car actuellement j'ai mis dans la bibliothèque que des fronts pour lettres seules, mon ancienne priorité étant de travailler sur la langue, et avant d'affiner cette partie j'avance un peu sur l'autre.
J'ai eu un message hier après-midi d'un docteur en science "conception informatique" qui a regardé et testé, si j'ai bien compris il va faire évoluer mon projet de son coté pour des applications pour handicapés, mais j'en sais pas plus à part qu'il a eu la courtoisie de me prévenir et de me remercier pour mon travail.
Cordialement

Dernière modification par temps (Le 15/05/2013, à 12:31)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#10 Le 15/05/2013, à 13:00

telliam

Re : [résolu] Nouveau problème de trie avec des switch en langage C

redonne le lien  vers ton dev stp


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#11 Le 15/05/2013, à 20:07

temps

Re : [résolu] Nouveau problème de trie avec des switch en langage C


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#12 Le 15/05/2013, à 21:08

telliam

Re : [résolu] Nouveau problème de trie avec des switch en langage C

docteur en science "conception informatique" ???? ca existe pas !!!


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#13 Le 15/05/2013, à 21:23

temps

Re : [résolu] Nouveau problème de trie avec des switch en langage C

Il faut que j'aille voir, je me souviens du titre que c'est dans un "truc" d'informatique, j'ai déduit le terme "conception informatique" que j'ai d’ailleurs placé entre guillemets, en fait j'accorde si peu d'importance à cet aspect (pour moi un homme == un homme, certains ont peut être plus de facilités mais le terme == reste cf Laplace et sa définition des titres en science).
Je viens de faire une petite vidéo car par hasard en ajustant les premiers fronts du son "é" (grande différence comme pour les consonnes directrice), j'ai trouvé un effet pas mal, et j'en ai fait une vidéo, et je remets à demain l'explication du son "é" qui est remarquable. La vidéo est ici

le texte qui donne le fond sonore de la vidéo est placé dessous

é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé kkkakkaka é é é éé é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé kkkakkaka é é é éé kkkkkiiikkkkikkkikkik é é é éé ssisso  é é é éémmllpppppppppppddddiddddodddadddde é é é éé kkkakkaka é é é éé vplmvmplllajjjhggggttrrrra é é é éé é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé kkkakkaka é é é éé é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé aaaiiiaaauuuaaaeeeaaa é é é éé kkkakkaka é é é éé kkkkkiiikkkkikkkikkik é é é éé ssisso  é é é éémmllpppppppppppddddiddddodddadddde é é é éé kkkakkaka é é é éé vplmvmplllajjjhggggttrrrra é é é éé 

A et un truc important pour la construction de vos lettres, il faut faire attention de toujours décaler vos segments de fronts autrement la répétition de vos segments de front prennent le pas sur votre son car les liens entre groupe de segments auront plus de force du fait de la répétifion. Donc quand nous répétons un groupe de segments il ne faut pas le mettre au même niveau par rapport à la pression d'équilibre (le milieu). C'est dit en d'autres mots quand je parle des forces des fronts, mais cet effet particulier est à surveiller dans nos constructions de lettres.

Cordialement

Dernière modification par temps (Le 15/05/2013, à 21:51)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

Haut de page ↑