Partage : Totalité des audios des pinyins et tons (fichiers mp3 et deck anki)

Bonjour
Dans la mesure où je profite largement de la générosité de la communauté, j’ai décidé de contribuer en partageant mon deck Anki. Je suis informaticien. J’ai donc quelques compétences pour automatiser l’extraction de données et manière propre et rapide.

Jusqu’à présent, j’utilisais celui partagé par Alex (l’Anki de David je crois ?). Cependant j’ai remarqué deux soucis :

  • Il n’y a pas tous les audios. Il y a tous les tons pour les finales individuelles mais pas pour les combinaisons intiales et finales, avec dans ce cas uniquement le premier ton.
  • De plus, j’ai aussi remarqué que le son était moins propre que les audios originaux. Je pense qu’ils ont dû être enregistrés manuellement et non pas téléchargés (parfois on entend comme des clic de souris d’ailleurs). C’est déjà un travail remarquable et très utile, qui a dû être long je suppose. Néanmoins, j’avais des soucis avec certains sons à cause de la qualité. Je les distinguais bien sur le site mais je me trompais avec les audios de ce deck.

J’ai réussi à chopper les URL dans la config réseau pour chaque son de la table et j’ai conçu un script Python pour récupérer l’ensemble des fichiers mp3 de la table des pinyins du site Yabla de manière automatisée. J’ai ensuite créé un second script Python pour créer un deck en quelques secondes de l’ensemble des combinaisons avec cartes dans les 2 sens.

Cela donne donc un deck de 3256 cartes (1628 dans le sens pinyin vers audio et 1628 dans le sens audio vers pinyin) avec les sons originaux « haute définition ». Là, vous avez littéralement tous les sons chinois possibles, sans exception.

Le deck Anki est téléchargeable ici : Proton Drive
Les fichiers mp3 individuels : Proton Drive
(Utilisez un PC. Sur smartphone parfois ça peut ne pas fonctionner)

Maintenant je retourne sur mes fiches de classement des radicaux. :smiley:

PS : A noter que les sont « r » ne sont pas bons sur Yabla. Ils ressemblent au r de « Road » en Anglais. Mon correspondant chinois (Pékin) m’a indiqué que seuls les chinois des USA le prononcent ainsi (il y a vécu un moment). D’ailleurs Yabla est américain, d’où l’accent chinois américain. Il faut donc vraiment le prononcer comme un « j » français, comme le conseille Alex dans ses formations. J’avais utilisé le son Yabla mais les chinois ne comprennaient pas mes mots et quand ils me corrigeaient ils prononçaient avec un « j » français bien reconnaissable. Sinon le reste semble ok.

10 « J'aime »

J’ai ajouté le zip des 1628 fichiers mp3 individuels. Je pense que cela pourra aussi en aider plus d’un (créer vos propres fiches, former des mots…).

4 « J'aime »

J’a la même chose Unique Download Link | WeTransfer .

Parfois j’ai pris les sons sur forvo, ça peut aider à améliorer les choses. J’ai aussi des decks anki avec du vocabulaire, les enchainement de 2 syllables avec les tons (comme existe sur yabla aussi).

3 « J'aime »

Super, beau travail, merci :innocent:

2 « J'aime »

Petit à petit il y a quelques fichiers audio que je remplace : ex. le r sont pas top sur yabla… je le savais pas au début, donc petit à petit je remplace donc on peut s’échanger des updates de temps en temps.

1 « J'aime »

Super boulot! Un tout grand merci.
Cette année je mise tout (ou presque) sur la prononciation. Et cela va m’aider grandement.
Je fais déjà les dictées sur base de Yabla dans Google traduction. Ton desk ANKI va m’être d’une grande utilité.

2 « J'aime »

Je te remercie.
Mon prochain chantier ce sera un deck pour des dictées tonales.

Je pense avoir plutôt bien compris comment prononcer les tons. Mais quand j’essaye le deck de dictées tonales d’Alex c’est la catastrophe. Je n’arrive pas à faire la différence entre les tons la plupart du temps (sauf le 3, qui est le plus simple finalement).

J’ai testé avec les audios de Pleco sur des mots au hasard ainsi qu’avec certains du deck d’Alex et là, étonnamment, j’arrive à les reconnaitre assez facilement. Du coup je me dis que là aussi il y a quelque chose à faire. Les audio de Pleco sont plus articulés et lents, c’est peut-être pour ça. J’ignore si ceux d’Alex sont des audios de natifs ou générés.

Je pense donc récupérer un maximum de mots sur Pleco pour me faire mon propre deck de dictées totales, avec 2-3-4 caractères (soyons fous). Si déjà j’arrive à les distinguer comme ça, ce sera un premier pas. Je serai plus rassuré car franchement le deck d’Alex m’a décomposé, comme le mot « kuàilè » que j’ai eu 100 fois mais que je n’arrivais jamais à identifier niveau tons alors que sur Pleco c’était direct ! Peut-être la vitesse qui n’est pas la même ou la prononciation moins marquée.

En tout cas j’ai à nouveau de l’espoir de pouvoir un jour comprendre les chinois. C’est déjà ça. :sweat_smile:

2 « J'aime »

Merci beaucoup Keskidees de partager ce deck ! J’ai téléchargé mais après je ne sais pas trop quoi faire ! Je me sens un peu comme une quiche !! Sur mon ordi, j’ai bien l’appli web de Anki mais je ne vois pas comment integrer ton deck à l’appli … Merci beaucoup stp d’éclairer ma lanterne !

1 « J'aime »

En haut à gauche tu cliques sur « Fichier » et ensuite « Importer ». Je te dis ça de mémoire car je ne suis pas devant mon PC.

Ensuite tu te contentes de valider. :slightly_smiling_face:

Merci beaucoup ! On verra plus tard quand tu auras du temps car je ne vois ni “fichier” ni “importer” …

Bonjour,

Tout d’abord, merci à Keskidees pour son travail !

N’aimant pas les decks Anki sans un peu de mise en forme, je me suis permis d’effectuer quelques améliorations :

  1. Pinyin colorisé en fonction du ton prononcé. Les couleurs de chaque ton peuvent être modifiées à votre guise dans le code CSS (couleurs en hexadécimal) :
    –tone-1: #dc2626; --tone-2: #16a34a; --tone-3: #2563eb; --tone-4: #9333ea; --tone-5: #525252;
  2. Input textuel : vous pouvez insérer le pinyin ou un caractère qui a cette même prononciation que vous entendez. Si l’encart est rouge, alors vous vous êtes trompé. S’il est vert, alors votre réponse est correcte.
    Acceptés : a1 ou ā; nv3, nü3 ou ; un caractère avec la même prononciation.
    ATTENTION : cet input textuel ne fonctionne pas sur AnkiDroid, le clavier ne veut pas s’afficher… Je n’ai trouvé aucun moyen de corriger cette erreur…
  3. Tous les caractères ayant cette même prononciation seront indiqués sur le verso, classés par fréquence d’apparition. Si jamais ces caractères sont dans le HSK, le niveau de HSK sera indiqué. ex: HSK1, HSK2, etc.
  4. Si vous travaillez en traditionnel, dans le code du verso, vous avez juste à passer cette variable à true :
    const useTraditional = false;
  5. J’ai réduit le nombre d’audios de 1628 à 1255, le tout pour une raison simple : certains pinyin ne se prononcent jamais car il n’y a pas de caractère associé.

Bref, le rendu est très joli !

Voilà, en espérant que cela puisse être utile au plus grand nombre.
Voici le lien Google Drive pour télécharger le deck amélioré : https://drive.google.com/file/d/15dnceK6daAmQ6EG3tpGin_pCWzSAxAWn/view?usp=sharing

Si vous voyez des améliorations à effectuer ou des erreurs à corriger, n’hésitez pas à revenir vers moi. Ce sera avec plaisir que je pourrai vous aider.

Au plaisir,
Jonathan

4 « J'aime »

Excellent. Effectivement pour moi aussi la prochaine étape c’est les dictées tonales. Franchement, mon expérience (cours intensifs en 2008 puis perdu et là je m’y remtes) c’est que la prononciation c’est FONDAMENTAL. Et chaque étape est une marche d’escalier significative : les pinyins, puis les tons, puis les association de 2 tons puis les phrases. Mais une fois qu’on a ancré la musicalité de la prononciation c’est un acquis majeur. Apprendre des mots et être incapable de se faire comprendre c’est super frustrant. Donc je pense qu’il faut passer beaucoup de temps sur la prononciation.

1 « J'aime »

Super, merci pour ces améliorations. J’hésite à changer par rapport à mon propre Deck. Mais j’imagine que je vais devoir recommencer à zéro toutes les cartes et pour 1200 cartes même en en faisant 25-50 par jour ça prend une éternité.

1 « J'aime »

Je le fais sur l’application Anki de Windows, pas sur AnkiWeb.
AnkiWeb sert juste de lien entre Anki sur Windows et AnkiDroid, car il permet d’enregistrer un compte de synchronisation.

1 « J'aime »

Whaou, super propre ton jeu. C’est impressionnant. J’hésite à laisser tomber le mien, mais c’est ennuyeux de perdre la mémoire des cartes étudiées. A voir. Je ne sais pas si je serai capable de mettre de couleurs etc comme toi dans le mien. Merci beaucoup en tout cas.

3 « J'aime »

Si vous voulez, copiez le code HTML recto et verso et CSS de mon deck et collez dans une IA pour effectuer les modifications à votre guise.
Concernant les couleurs, vous n’avez pas les données nécessaires dans votre deck. MAIS j’ai une astuce, il vous suffit de demander à l’IA d’implémenter dans le code un programme qui regarde le type de ton (juste en regardant l’accent au dessus de la lettre accentuée du pinyin ex: ā → ton 1, ù → ton 4, etc.). De là, il pourra savoir le numéro de ton et affecter une couleur définie au pinyin.

Si vous voulez en plus l’input textuel, idem demandez à l’IA de prendre seulement comme référence le pinyin (et non de caractères exemple, car vous n’avez pas ces données dans votre deck)

Ça devrait donc être possible d’implémenter ça proprement pour votre deck !

Au plaisir,
Jonathan

1 « J'aime »

Merci à vous deux de nous partager ce sacré boulot ! C’est vraiment top !

Sur Ankiweb, pour le cartouche de saisie avec le n° du ton ne fonctionne pas chez moi : ya3o reste en rouge, alors que yǎo passe en vert - J’ai installé PinyinTones pour contourner le pb.

1 « J'aime »

Bonjour @Sergio38 , très bonne remarque, je viens de mettre à jour le deck pour que ça fonctionne.
Voici le lien : https://drive.google.com/file/d/1oP0nq07gfe-GNcjkS9dA9_I6WmXFsFY0/view?usp=sharing
Si jamais tu as déjà travaillé avec ton deck et tu ne veux pas perdre ta progression, tu as juste à remplacer le code actuel du recto (audio → pinyin) avec ce code, cela devrait fonctionner :

<link href="https://fonts.googleapis.com/css2?family=Reggae+One&family=Lexend:wght@300;500;700&display=swap" rel="stylesheet">

<div class="zh-pinyin-container">

<div class="zh-pinyin-title">Écoute & Reconnaissance</div>

<div class="zh-pinyin-audio-wrap">{{audio_name}}</div>

<div class="zh-pinyin-input-wrap">

<input type="text" id="zh-user-input"

autocomplete="off" autocorrect="off" autocapitalize="off"

spellcheck="false" placeholder="Entrez le pinyin ou un caractère">

<div class="zh-pinyin-hint">Acceptés : <b>yao3</b>, <b>ya3o</b> ou <b>yǎo</b>; <b>nv3</b>, <b>nü3</b> ou <b>nǚ</b>; un <b>caractère</b> avec la même prononciation</div>

</div>

</div>

<div id="h-pinyin" style="display:none;">{{pinyin}}</div>

<div id="h-simp" style="display:none;">{{example_characters_simplified}}</div>

<div id="h-trad" style="display:none;">{{example_characters_traditional}}</div>

<script>

(function() {

const input = document.getElementById('zh-user-input');

const rawPinyin = document.getElementById('h-pinyin').textContent.trim();

const rawSimp = document.getElementById('h-simp').textContent.trim();

const rawTrad = document.getElementById('h-trad').textContent.trim();

function parseChars(str) {

return str.replace(/\[\\\[\\\]\\s\]/g, '').split(',').filter(c => c.length > 0);

}

const validHanzi = new Set(\[...parseChars(rawSimp), ...parseChars(rawTrad)\]);

function normalizePinyin(str) {

return str.toLowerCase()

.replace(/\\s/g, '')

.replace(/v/g, 'ü').replace(/u:/g, 'ü')

.replace(/\[āáǎà\]/g, 'a').replace(/\[ēéěè\]/g, 'e').replace(/\[īíǐì\]/g, 'i')

.replace(/\[ōóǒò\]/g, 'o').replace(/\[ūúǔù\]/g, 'u').replace(/\[ǖǘǚǜü\]/g, 'ü');

}

function getTone(s) {

if (/\[āēīōūǖ\]/.test(s)) return '1';

if (/\[áéíóúǘ\]/.test(s)) return '2';

if (/\[ǎěǐǒǔǚ\]/.test(s)) return '3';

if (/\[àèìòùǜ\]/.test(s)) return '4';

return '5';

}

function getToneVowel(pinyin) {

if (pinyin.includes('a')) return 'a';

if (pinyin.includes('e')) return 'e';

if (pinyin.includes('ou')) return 'o';

for (let v of \['o','i','u','ü'\]) {

if (pinyin.includes(v)) return v;

}

return null;

}

const targetPinyinPlain = normalizePinyin(rawPinyin);

const targetTone = getTone(rawPinyin);

const targetFull = targetPinyinPlain + targetTone;

input.addEventListener('input', () => {

let val = input.value.trim();

if(!val) {

input.classList.remove('zh-correct', 'zh-wrong');

return;

}

if (validHanzi.has(val)) {

input.classList.add('zh-correct');

input.classList.remove('zh-wrong');

return;

}

let userVal = val.toLowerCase();

let toneMatch = userVal.match(/\[1-5\]/);

let userTone = toneMatch ? toneMatch\[0\] : getTone(userVal);

let noToneVal = userVal.replace(/\[1-5\]/g, '');

let userBase = normalizePinyin(noToneVal);

let toneIndex = userVal.search(/\[1-5\]/);

let toneVowel = getToneVowel(userBase);

let validTonePlacement = false;

if (toneIndex === -1) {

validTonePlacement = true; // pas de chiffre

} else if (toneIndex === userVal.length - 1) {

validTonePlacement = true; // chiffre à la fin

} else if (toneVowel) {

let baseWithoutDigits = userVal.replace(/\[1-5\]/, '');

let vowelIndex = baseWithoutDigits.indexOf(toneVowel);

if (toneIndex === vowelIndex + 1) {

validTonePlacement = true;

}

}

let userFinal = userBase + userTone;

if (

validTonePlacement &&

(userFinal === targetFull || userVal === rawPinyin.toLowerCase())

) {

input.classList.add('zh-correct');

input.classList.remove('zh-wrong');

} else {

input.classList.add('zh-wrong');

input.classList.remove('zh-correct');

}

});

})();

</script>

Au plaisir !
Jonathan

3 « J'aime »

Excellent, je viens de l’installer, ça marche super bien, c’est le top comme dictée de pinyins !

J’ai remplacé le deck directement car je l’avais installé seulement hier, donc pas beaucoup d’historique à sauvegardé.

Merci pour la correction super rapide, waouh !

Au besoin, si vous apercevez des améliorations qui peuvent être utiles, n’hésitez pas à me les proposer.

Au plaisir,
Jonathan

1 « J'aime »