Projet

Général

Profil

P12AB10 SPEEX encoderplayer sur RDK RX62N » Historique » Version 16

Anonyme, 09/04/2021 14:28

1 2 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16614/P12AB10_logo_polytech_20120509024723_20120509032931.png!
2 1 Anonyme
3 2 Anonyme
h1=. *%{color:#00008B}P12AB10 SPEEX encoderplayer sur RDK RX62N%*
4 1 Anonyme
5 3 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16615/P12AB10_affiche_20130120235227_20130120235953.png!
6 2 Anonyme
7
*Projet GE4 - GE5 2012 : Sujet N° P12AB10*
8
9
*Entreprise / Client : RENESAS ELECTRONICS CORPORATION / M. Martins TOLENTINO*
10
11
*Tuteur industriel : M. Gérard CHAZELLE (Michelin)*
12
13
*Tuteur technique : M. Michel JAMES (Polytech)*
14
15
*Responsable Projet : M. Jacques LAFFONT (Polytech)*
16
17 1 Anonyme
*Groupe de travail : M. Mohamad ZARZOUR et César MAKAMONA MBUMBA SHÉALTIEL*
18 3 Anonyme
19
[[1. Résumé]] 
20
[[2. Abstract]] 
21
[[3. Introduction]] 
22
[[4. Présentation du Sujet]] 
23
        
24
p(((. [[1. Renesas]] 
25
[[2. Speex]] 
26
[[3. RX210]] 
27
    
28
[[5. Cahier des Charges]] 
29
    
30
[[6. Étude de faisabilité]] 
31
        
32
p(((. [[1. Problématiques]] 
33
[[2. Faisabilité]] 
34
[[3. Solutions]] 
35
    
36
[[7. Gestion de Projet]] 
37
        
38
p(((. [[1. W.B.S.]] 
39
[[2. Gantt]] 
40
    
41
[[8. Réalisation]] 
42
        
43
p(((. [[1. Méthodologie]] 
44
[[2. Tâches]] 
45
[[3. Sous-traitance]] 
46
    
47
[[9. Bilan]] 
48
        
49
p(((. [[1. État d'avancement]] 
50
[[2. Analyse Critique]] 
51
[[3. Perspectives]] 
52
    
53
[[10. Notes d'Application]] 
54
        
55
p(((. [[1. Sujet 1]] 
56
[[2. Sujet 2]] 
57
    
58
[[11. Bibliographie]]
59
60
p=. *%{color:red}1) Résumé%* 
61
62
Le projet SPEEX ENCODER/PLAYER SUR RBP RX210 est proposé par RENESAS ELECTRONICS CORPORATION, qui est une entreprise
63
de renommée internationale basant ses opérations sur la conception, le développement, la fabrication, la vente et le service après-vente
64
des composants électroniques des systèmes embarqués et de puissance.
65
66
Dans le but de démontrer la puissance et l’efficacité de ses produits, en développant des applications avec des outils libres et gratuits,
67
RENESAS veut faire la transmission audio (vocale) d’un point à un autre. L’application ainsi souhaitée devra utiliser le codec libre et gratuit SPEEX sur le microcontrôleur Renesas RX210, avec le compilateur KPIT GNURX et le noyau temps réel FreeRTOS, ces derniers étant aussi libres et gratuits.
68
69
Le travail consiste à porter le code source du codec SPEEX sur le RX210 afin de réaliser, d’une part, un encodeur qui fait l’acquisition
70
d’un flux audio analogique, le transforme en flux Speex numérique et de l’autre, un décodeur qui restitue un flux audio à partir d’un flux Speex reçu en entrée. Les deux modules, l’Encodeur et le Décodeur, sont reliés par une liaison série asynchrone (UART).
71
72
Mots clés :
73
74
p(((. - Transmission audio/vocale
75
- "RX / RX200 / RX210 / RPB RX210":https://www.renesas.com/eu/en/products/mpumcu/rx/rx200/rx210/index.jsp
76
- "FreeRTOS":https://www.freertos.org/ / "KPIT GNURX":https://kpitgnutools.com// USB
77
- Encodage / Décodage
78
- Codec Speex 
79
80
---
81
82
p=. *%{color:red}2) Abstract%* 
83
84
RENESAS ELECTRONICS CORPORATION is an international renown company which based its operations on the design, development, manufacturing, sales and after-sales service of embedded systems’s and power systems’s electronic components.
85
86
Proposed by RENESAS, the SPEEX ENCODER / PLAYER ON RBPRX210 project aim to demonstrate the power and effectiveness of its products, developing applications with free and open source tools. RENESAS wants to transmit audio (voice) from one point to another. As desired,
87
the application will use SPEEX codec on Renesas RX210 microcontroller, with KPIT GNURX compiler and FreeRTOS real time kernel.
88
89
The work is to port SPEEX source code on the RPB RX210 board, to achieve, on the one hand, an Encoder, which acquires
90
an analog audio stream, converts it into Speex digital streams and on the another hand, a Decoder which restores an audio stream from
91
a Speex stream inputted. Both modules, Encoder and Decoder, are connected by asynchronous serial communication interface (UART).
92
93
Keywords:
94
95
p(((. - Audio/Voice transmission
96
- "RX / RX200 / RX210 / RPB RX210":https://www.renesas.com/eu/en/products/mpumcu/rx/rx200/rx210/index.jsp
97
- "FreeRTOS":https://www.freertos.org/ / "KPIT GNURX":https://kpitgnutools.com// USB
98
- Encoding / Decoding
99
- Speex codec
100
101
---
102
103
p=. *%{color:red}3) Introduction%* 
104
105
De la téléphonie mobile à l’Internet, la transmission des données à distance, en utilisant n’importe lequel de support, a changé notre quotidien, pour ne pas dire, l’a révolutionné. Ce type de transmission nécessite des techniques particulières, en l’occurrence, celles d’encodage et de décodage.
106
107
Ce dans ce cadre que la réalisation, assistés par les enseignants et professionnels, du projet SPEEX ENCODER / PLAYER prépare le sentier
108
à notre futur métier d’Ingénieur. Ce projet, prévu dans la "formation à Polytech’Clermont-Ferrand en vue de l’obtention du diplôme d’Ingénieur en Génie Électrique":http://polytech.univ-bpclermont.fr/ingenieur-en-genie-electrique.html, se déroule en deux phases. L’une de 50 heures, sur l’identification des besoins réels du Client et l’étude de faisabilité, en GE4 et l’autre de 250 heures, sur la réalisation, en GE5.
109
110
Le Client, RENESAS ELECTRONICS CORPORATION, représenté par M. Martins TOLENTINO, est connu pour la production des systèmes de semi-conducteurs dans l’électronique embarquée et l’électronique de puissance. Il est le premier fabricant des microcontrôleurs et le second fabricant des processeurs d’applications, dans le monde.
111
112
Dans les soucis de fidéliser ses clients et d’en gagner d’autres et avec la course du libre et gratuit, RENESAS fait la promotion de ses produits en prouvant leur efficacité avec des applications utilisant des outils libres et gratuits. C’est dans ce contexte que s’inscrit le projet SPEEX ENCODER / PLAYER, qui fait la transmission audio d’un point à un autre, utilisant le codec SPEEX, le compilateur KPIT GNURX et le noyau temps réel "FreeRTOS":http://dirac.epucfe.eu/projets/wakka.php?wiki=FreeRTOS, tous libres et gratuits.
113
114
Le but est de réaliser un encodeur et un décodeur en portant le code du codec SPEEX, spécialisé et optimisé pour la voix humaine, sur le microcontrôleur RPB RX210. Ainsi, créer une chaîne de traitement audio qui fait l’acquisition d’un flux audio analogique, le transforme en flux Speex numérique et le restituer en fin de chaîne sous forme de flux audio analogique.
115
116
117
Nous parlerons, dans la suite, du Client et du contexte du projet, des éléments de base, c’est-à-dire, le codec SPEEX et la carte RPB RX210.
118
Nous décrirons le cahier des charges tel qu’énoncé par le Client, duquel découlera le cahier des charges fonctionnel, qui nous conduiront
119
à la description de la ou des problématiques. Nous proposerons une ou des solutions avec des options, partant des problématiques et
120
de la faisabilité et détaillerons les différentes étapes pour mener à bien le projet. Le projet est développé sous deux environnements,
121
CODEBLOCKS et HEW.
122
123
---
124
125
p=. *%{color:red}4) Présentation du Sujet%* 
126
127
h2. 4.1) RENESAS ELECTRONICS CORPORATION
128
129 4 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16618/P12AB10_logo_ren_20130120235227_20130121065931.jpg!
130
131
"Renesas Electronics Corporation":https://www.renesas.com/eu/en (ルネサス エレクトロニクス, Renesasu eretoronikusu) est une entreprise japonaise basée à Tokyo et cotée à la bourse de ce dernier (TSE : 6723). Il est né de la fusion d’HITACHI Ltd et de MITSUBISHI ELECTRIC CORPORATION en 2002 sous la nomination de RENESAS TECHNOLOGY. Il est devenu RENESAS ELECTRONICS CORPORATION suite à sa fusion avec NEC ELECTRONICS CORPORATION en 2010. RENESAS est le premier fabricant mondial des microcontrôleurs et le second dans la fabrication des processeurs d’applications. Il assure également la conception, fabrication, vente et services après ventes des systèmes de semi-conducteurs pour la téléphonie mobile, l’automobile, l’électronique de puissance, les mémoires, les LCD, les circuits intégrés RF et système sur puce.
132
133
Dans le but de démontrer la puissance et l’efficacité de ses produits, en développant des applications avec des outils libres et gratuits,
134
RENESAS veut faire la transmission audio (vocale) d’un point à un autre. L’application ainsi souhaitée devra utiliser le codec libre et gratuit SPEEX sur le microcontrôleur Renesas RX210.
135
136
h2. 4.2) SPEEX
137
138 5 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16619/P12AB10_logo_spx_20120509041413_20120509041534.png!
139
140
Un codec (Compression-Décompression ou Codage-Décodage) est un procédé matériel ou logiciel permettant de compresser/encoder un signal pour une transmission ou un stockage, d’un côté, et de décompresser/décoder pour une édition ou une restitution, de l’autre.
141
142
Le "SPEEX":https://www.speex.org/ est un codec, logiciel, audio, libre et gratuit, spécialisé et optimisé pour la voix humaine. Il a été conçu, en 2002 par "Jean-Marc VALIN":https://jmvalin.ca/, pour la transmission vocale sur réseau IP (Voice Over Internet Protocol), c’est-à-dire, transmission sous forme des paquets de données numérique (PDU : Protocol Data Unit) par le protocole TCP/IP ou UDP/IP entre entités ou systèmes connectés au réseau. D’où une grande variété de débits, allant de 2 à 44 Kbits/s. C’est un codec robuste qui compresse avec perte de données, disposant de plusieurs fréquences d’échantillonnage et supporte un changement dynamique du débit d’encodage/décodage. L’algorithme de calcul utilisé est le CELP (Code Excited Linear Prediction), un algorithme de codage à prédilection linéaire, basé lui-même sur l’algorithme LPC (Linear Prediction Code). La dernière version est la 1.2rc1.
143
144 6 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16620/P12AB10_voix2_20130120235227_20130121071704.png!
145 5 Anonyme
146 1 Anonyme
h3=. Fig. 1 : Appareil phonatoire humain
147 6 Anonyme
148
p=. (www.ph-ludwigsburg.de/html/2b-frnz-s-01/overmann/baf3/phon/3k.htm)
149
150
La voix humaine est un phénomène physique dû à la vibration de l’air, provenant des poumons vers le nez ou la bouche lors d’une expiration, soit par les cordes vocales soit par les différentes cavités ou/et organes de l’appareil phonatoire humain (Fig. 1). Le langage parlé est basé sur la succession de sons élémentaires appelés phonèmes, groupés en deux familles :
151
152
- les phonèmes voisés : générés par la vibration de l’air par les cordes vocales et ont un caractère quasi-périodique (sinusoïde).
153
- les phonèmes non voisés : correspondent à la vibration de l'air par les autres cavités et organes de l'appareil phonatoire et ont un caractère aléatoire (bruit). 
154
155 7 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16621/P12AB10_lpc_20130121111713_20130121111912.png!
156 6 Anonyme
157 1 Anonyme
h3=. Fig. 2 : Synthétiseur ou Codeur LPC 
158 7 Anonyme
159
Pour synthétiser la voix humaine, il est nécessaire de reproduire une chaîne de traitement correspondant à l'appareil phonatoire humain.
160
Pour ce faire, le codage à prédiction linéaire (LPC), tel que l'illustre la figure 2, utilise trois composantes :
161
162
- *La source d'excitation* : composée d’un générateur d’impulsions périodiques, qui synthétise les phonèmes voisés, et d’un générateur
163
du bruit blanc, qui synthétise les phonèmes non voisés. Dans la synthèse des phonèmes voisés, c'est la fréquence fondamentale du signal ou pitch
164
qui est extraite, et c'est la variance du bruit qui est prise en compte pour les phonèmes non voisés. Un signal voisé correspond à une lettre
165
comme ‘’a’’ ou ‘’u’’ et un son comme ‘’ne’’, tandis qu’un non voisé correspond à une lettre comme ‘’r’’ ou ‘’s’’ et un son comme ‘’c’est’’ (Fig. 3).
166
167
- *Le gain* : il ajuste l'amplitude du signal synthétique par rapport à celle de l’original.
168
169
- *Le Filtre de synthèse*: c'est un filtre passe-bas numérique utilisant la méthode dite prédictive, c’est-à-dire, la valeur du signal à l'instant N est estimée grâce aux valeurs N-1 du signal. Le but est de déterminer les écarts entre les différents échantillons, plutôt que de les calculer directement. La minimisation de l'erreur, dite erreur de prédiction, entre le signal original et le signal synthétique conduit à la détermination des coefficients de la fonction de transfert (le filtre).
170
171 8 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16622/P12AB10_fft_20130120235227_20130121071741.png!
172 7 Anonyme
173 1 Anonyme
h3=. Fig. 3 : FFT et Autocorrélation des signaux, voisé (gauche) et non voisé (droite)
174 8 Anonyme
175
Synthétiser la voix humaine revient donc, à calculer le pitch d’un signal, s’il est voisé, ou la variance, s’il est non voisé. Le processus de synthèse a donc deux phases : l'identification de la fonction (source) d'excitation, sinusoïde ou bruit blanc, et l'identification de la fonction de transfert du modèle vocal.
176
177
Pour identifier la source d’excitation, le signal à analyser est segmenté en fenêtres de 20ms, c'est-à-dire, 160 échantillons pour une fréquence d'échantillonnage de 8 KHz. Le codeur génère en sortie une fréquence d'excitation (codée sur 16 bits), un ensemble de 10 coefficients (codés sur 10 x 8 bits), et un gain (codé sur 8 bits). Le débit du codeur est donc de 104 bits toutes le 20 ms, soit 5,2 kb/s.
178
179
S’ensuit un filtrage basse fréquence avec une fréquence de coupure de 4khz, qui ne garde que le spectre utilisé par la voix humaine, un échantillonnage à 8khz pour éviter tout phénomène de repliement (théorème de Shannon) et une Autocorrélation. Le graphe du résultat obtenu (Fig. 3), après les différentes opérations, peut faire apparaître plusieurs pics, un à l'origine puisqu'il s'agit d'une Autocorrélation, et un deuxième si le signal est voisé. Cependant pour considérer le second pic, son amplitude doit être au moins de 40% de celle à l'origine. Si c'est le cas, la fréquence d'excitation retenue est la fréquence ainsi obtenue, sinon le signal est non voisé et l'excitation est un bruit blanc.
180
181
Après identification de la source d’excitation, les coefficients de la prédiction linéaire ou coefficients de réflexion du filtre sont à calculer en utilisant "l'algorithme de Durbin":http://externe.emt.inrs.ca/users/benesty/lectures/lecture04.pdf. Ils doivent minimiser l'erreur quadratique moyenne définit par :
182
183 9 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16624/P12AB10_form1_20130120235227_20130121000659.png!
184
185
ai : coefficients de la fonction de transfert (filtre)
186
x(n) : signal à déterminer à l’instant n
187
e(n) : erreur de prédiction linéaire à l’instant n
188
189
L'algorithme de Durbin génère 10 coefficients de réflexion compris entre -1 et +1. L’expérience conduit à observer que les coefficients proches de ces bornes sont les plus importants. Cette observation a conduit, à son tour, à adopter l'échelle LAR (Log Area Ratio), illustrée par la figure 4, définie par :
190
191 10 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16625/P12AB10_lar1_20121226012713_20121226013300.png!
192
193 11 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16626/P12AB10_lar3.jpg_20121226012713_20121226013353.gif!
194 10 Anonyme
195 1 Anonyme
h3=. Fig. 4 : Fig. 4 : Représentation de l'échelle LAR et son approximation linéaire
196 11 Anonyme
197
p=. (http://www-sop.inria.fr/rodeo/avega/phd/phd-html/node16.html)
198
199
La synthèse devient complète après détermination du gain, par simple calcul d’énergie. 
200
201 12 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16627/P12AB10_form3_20130126143914_20130126144112.png!
202 11 Anonyme
203 1 Anonyme
h3=. Fig. 5 : Synthétiseur ou Codeur CELP
204 12 Anonyme
205
Comme l’on peut le constater sur la figure 5, par rapport au modèle précèdent :
206
207
- La source d'excitation est composée deux banques de données, des tables au sens informatique du terme, statique et adaptative, qui contiennent des échantillons de voix. La table adaptative se remplit au fur et à mesure que la synthèse progresse tandis que la table statique est pré remplie et reste inchangée.
208
209
- Chaque table de la source d’excitation a son gain propre.
210
211
- La boucle de retour, commune aux deux tables, indique les index des vecteurs à choisir dans ces dernières en transmettant l'erreur quadratique.
212
213
- Un filtre de perception est rajoutéà la fin de la chaine de traitement, afin d’accommoder le son restitué, suppression du bruit, à la perception humaine. Sa fonction de transfert en z est donnée par :
214 13 Anonyme
215
p=. !https://forge.clermont-universite.fr/attachments/download/16628/P12AB10_form2_20130126143914_20130126144155.png!
216
217
218
L’utilisation d’un codec, en général et ceux de la voix en particulier, dans la transmission, implique un retard (latence) dû à l’algorithme utilisé. Pour le Speex, cette latence est de 30 ms avec une fréquence d’échantillonnage de 8 kHz et de 34 ms à 16 kHz. Ces valeurs ne tiennent pas compte le temps d’encodage/décodage des trames par le CPU. Voici les caractéristiques principales du codec Speex :
219
220
p(((. - Codec libre et gratuit
221
- Conçu et optimisé pour la transmission vocale sur Internet
222
- Grande variété de débits : de 2 à 44 kbps
223
- Compresse avec perte de données
224
- Trois fréquences d’échantillonnage : 8 kHz (Bande étroite : Narrowband), 16 kHz (Bande large : Wideband) et 32 kHz (Bande très large: Ultra-Wideband).
225
- VBR : Changement dynamique du débit d’encodage/décodage
226
- Complexité variable
227
- Détection d’activité vocale (VAD) et Transmission discontinue (DTX)
228
- Encodage/Décodage stéréo
229
- Échantillonnage multiple : Narrowband + Wideband
230
- Implantation en virgule fixe
231
232
Noter que Speex a des fonctionnalités qu’on ne retrouve pas sur d’autres codecs, comme le VBR ou le DTX ou encore l’échantillonnage multiple, et il supporte plusieurs plateformes logicielles et matérielles.
233
234
h2. 4.3 RX210
235
236
Le "RX 210":https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx210-high-performance-low-power-32-bit-microcontrollers-supporting-large-capacity-memory est un microcontrôleur de RENESAS, le premier de la série RX200 dans la famille RX. La particularité de la série RX200 est leur faible consommation électrique à performances égales avec d’autres séries, comme le montre la figure 6.
237
238 14 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16630/P12AB10_rx210_20130120235227_20130121071915.jpg!
239
240
h3=. Fig. 6 : Caractéristiques du RX 210
241
242
(http://am.renesas.com/products/mpumcu/rx/rx200/rx210/index.jsp)
243
244
A noter que le RX210 est un microcontrôleur 32 bits ne disposant pas d’unité de calcul à virgule flottante (FPU). Les éléments du microcontrôleur encerclés sur la figure 6, ci-dessus, sont utilisés dans la réalisation de l’application, se référer donc à cette partie pour plus des détails (cf. Partie 8, section 2).
245
246
p=. *%{color:red}5) Cahier des Charges%* 
247
248
Constituant l’un des points importants du projet, les besoins réels du Client sont à identifier, définir, préciser et quantifier, car ils permettent
249
entre autre de cadrer le projet. Après concertation, voici le cahier des charges retenu, par les deux parties :
250
251
p(((. - *Utiliser la dernière version du code source du Speex.*
252
    La dernière version est le 1.2rc1, du 23 juillet 2008 (mise à jour du 1.2beta3), téléchargeable librement et gratuitement
253
    sur www.speex.org
254
255
256
p(((. - *Utiliser KPIT GNU Tools (RX) : Compilateur libre et gratuit.*
257
    Le compilateur GNU RX, conçu et développé par KPIT Cummins, est destiné à la programmation des microcontrôleurs Renesas de la famille RX, donc supporté par le RX210. Il s’intègre automatiquement à l’environnement de développement Renesas HEW. La version utilisée est la v12.02 (10 juillet 2012), téléchargeable via un compte gratuit sur www.kpitgnutools.com.
258
259
260
p(((. - *Utiliser soit HEW soit E²Studio (Eclipse) comme environnement de programmation.
261
    HEW (High-performance Embedded Workshop) est un EDI (Environnement de Développement Intégré) propriétaire de Renesas tandis que Eclipse est libre et gratuit, téléchargeable sur www.renesas.eu et www.eclipse.org respectivement.*
262
263
264
p(((. *Porter le code source du Speex sur la cible (RX210).*
265
    La carte de développement choisis est le RPB RX210 (Renesas Promoted Board), qui servirait de support matériel aux fonctions d’encodage et de décodage Speex.
266
267
268
p(((. - *Travailler en virgule fixe (pas de FPU) => Pas de débit variable (pas de VBR).*
269
    Le RX 210 ne dispose pas d’unité de calcul en virgule flottante (FPU), d’une part, et ,de l’autre, le débit variable (VBR) d’encodage/décodage n’est pas compatible avec les calculs effectués en virgule fixe. Par ailleurs, une application fonctionnant en virgule fixe, est aisément implémentée sur la majorité de support, même celle disposant de FPU. Mais l’inverse n’est pas vrai.
270
271
272
p(((. - *Utiliser un UART pour la transmission des données entre l’encodeur et le décodeur.*
273
    La communication via un UART (Universal Asynchronous Receiver Transmitter) est sérielle et asynchrone.
274
275
276
p(((. - *Choisir la fréquence d’échantillonnage et le débit permettant d’avoir une qualité audio suffisante, pour être compris, et au plus 50% de charge CPU (Central Processing Unit) sur une trame.*
277
    La qualité du signal audio à la fin d’une chaîne de traitement d’encodage/décodage Speex, dépend du paramètre qualité de Speex, qui est lié au débit et à la fréquence d’échantillonnage, ces derniers déterminant ainsi le ratio compression. Une charge d’au plus 50% permettrait, un déterminisme temporel et l’ajout d’autres fonctionnalités.
278
279
280
p(((. - *Utiliser "FreeRTOS":https://www.freertos.org/ : Noyau temps réel libre et gratuit (Si possible).*
281
    Le noyau temps réel "FreeRTOS":https://www.freertos.org/ est système d’exploitation adapté aux microcontrôleurs, avec pus de 30 architectures supportées. Un système d’exploitation temps réel (SETR) permet de paralléliser (repartir) les tâches et assurer le déterminisme temporel (temps de réponse) d’une application. Ce dernier étant un élément primordial pour les applications réactives et temps réel.
282
283
284
p(((. - *Ajouter la fonction « Texte à Audio » (Si possible).*
285
    Fonction permettant de lire un fichier texte, au format ASCII, à partir d’une clé USB, de le convertir en flux Speex et de le restituer en fin de chaîne.
286
287
288
p(((. - *Utiliser les connections audio d’un PC pour les tests finaux.*
289
    Pour valider l’application, les flux audio entrant et sortant seront, respectivement, produit et récupérer par un PC, c’est-à-dire,
290
Sortie audio PC --> Entrée application et Sortie application --> Entrée PC.
291
292
Partant de ce qui précède, l’application est découpée en deux grandes fonctions, illustrées par la figure 7 ci-dessous.
293
294 15 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16631/p07ab18_logo14_20130126151614_20130126151925.png!
295 1 Anonyme
296
h3=. Fig. 7 : Schéma fonctionnel de l'application
297 15 Anonyme
298
La quantification du cahier des charges décrit ci-haut, nous conduit à la définition d’un cahier des charges fonctionnel, qui spécifie les différentes fonctions et contraintes de l’application, donné par la figure 8.
299
300 16 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16632/P12AB10_logo15_20130120235227_20130121001329.png!
301 15 Anonyme
302 1 Anonyme
h3=. Fig. 8 : Cahier des charges fonctionnel
303 16 Anonyme
304
+Légende+
305
Chaque fonction est associée à ses contraintes, s’il y en a. C0.1 et C0.2 sont des contraintes générales, c'est-à-dire, sur toute l’application.
306
307
---
308
309
p=. *%{color:red}6) Étude de faisabilité%* 
310
311
Après avoir identifié les besoins réels du client, défini et quantifié le cahier des charges, l’étude de faisabilité est la véritable porte d’entrée pour la réalisation d’un projet, sans directement toucher à l’aspect technique du projet, dans un premier temps, la viabilité de celui-ci est mise en cause, les enjeux, les opportunités, les risques … autant d’éléments sont examinés pour décider de la continuité ou non du projet. Ensuite, les limites du projet sont définies. Enfin, la question à se poser est : "Le projet, tel que défini, est-il faisable ? réalisable ?" Cette question qui en cache d’autres, conduit à la problématique. Elle n’aura de réponse qu’après avoir répondu à toute autre qui s’y réfère (faisabilité). Et, ce en répondant à celle-ci, qu’il y aura concrétisation (solutions). 
312
313
h2. 6.1) Problématiques
314
315
La problématique du projet se subdivise en deux axes, celui de la transmission des données de façon générale, celle de la voix humaine en particulier, et celui du portage, en particulier le portage du PC vers un microcontrôleur.
316
317
Pour transmettre les données de la source à la destination, différentes techniques sont utilisées, selon la nature des données à transmettre et du support de la transmission. Pour ce projet, c’est l’aspect temps réel de la transmission qui est mis en exergue. D’où, la nécessité d’utiliser un processus de compression de données à la source afin de réduire le temps de transmission, de gagner donc en réactivité entre la source et la destination. Qui dit compression, entraîne inévitablement décompression afin de retrouver la forme originelle de données.
318
319
Le portage est d’autant plus "difficile" à réaliser quand les deux plateformes concernées sont des niveaux différents, du point de vu performances : rapidité de fonctionnement, capacité mémoire, etc. Sur le cas particulier de ce projet, cette difficulté est d’autant plus ressentie, car, le passage se fait du PC, dont les capacités sont évaluées en GHz pour le CPU et Go pour la mémoire, vers un microcontrôleur, dont les capacités sont évaluées en MHz pour le CPU et Ko pour la mémoire.
320
321
Ce qui se résume par : Porter le codec Speex sur le microcontrôleur RX 210 pour faire la transmission audio, vocale, d’un point à un autre par liaison sérielle.
322
323
h2. 6.2) Faisabilité
324
325
Comment réaliser le projet ? Il est question, ici, de se doter d’informations nécessaires et suffisantes (cf. Partie 4, Sections 2 et 3), afin de maîtriser son sujet théoriquement et d’envisager la pratique. Ces informations permettront de rediscuter sur le cahier des charges, dans la mesure du possible, et de commencer la réalisation du projet, bien entendu, si après récolte de ces informations et rediscutions sur le cahier des charges, le projet reste faisable.
326
327
Le travail à effectuer, consiste à télécharger les codes sources du SPEEX et les tester sur PC. Le but étant, de prime à bord, de réaliser un Encodeur et un Décodeur sur PC, c’est-à-dire, créer et compiler deux projets avec CodeBlocks?, qui contiennent respectivement les codes sources d’encodage et du décodage. Ensuite, vérifier que les résultats obtenus sont similaire à ceux des exécutable Windows d’encodage et de décodage disponibles sur le site internet officiel du Speex ou/et des lecteurs audio disposant du codec audio SPEEX. Enfin, tester les différentes configurations d’encodage et de décodage afin de déceler celle qui répond au mieux au cahier des charges du client et qui serait réalisable/compatible avec le microcontrôleur choisi.
328
329
p(((. - Après essais et tests sur PC, voici les caractéristiques retenues pour la réalisation de l’application, tout en respectant au mieux les contraintes du cahier des charges :
330
- Fréquence d’échantillonnage : 8 kHz
331
- Qualité : 4
332
- Débit : 8 kbps
333
- Complexité : 1
334
--> Ce paramétrage/configuration conduit à un Ratio-compression de 16:1 des trames de 160x16 bits.
335
336
337
Ces choix tiennent aussi compte de la spécificité du SPEEX, qui offre une correspondance, en fonction de la fréquence d’échantillonnage, entre la qualité du son après décodage et le débit utilisé (Figure 8). Sachant que l’un des besoins majeurs du client est d’utiliser le moindre des ressources pour un rendement (qualité du son restitué) meilleur, la fréquence d’échantillonnage choisi est 8 kHz, qui utilise le moins des ressources, par rapport aux autres fréquences d’échantillonnage (16 et 32 kHz).
338
339
De ce fait, le débit est choisi suivant le tableau de la figure 8, qui correspond au seuil du facteur qualité Speex (3 – 4) pour avoir une qualité de son suffisante (audible avec le moins de bruit possible). Avec cette configuration, le paramètre complexité, ajustant le temps d’encodage/décodage, ne peut être supérieur à 2 et conduit à des trames de 160x16 bits et un ratio-compression de 16:1. Ce dernier joue un rôle important sur le temps de transmission de données entre l’encodeur et le décodeur. Donc, dans la réactivité de l’application dans son ensemble.
340
341
p=. !!
342
343
h3=. *Fig. 9 : Correspondance Qualité - Débit à 8kHz, bande étroite (Narrowband).*