Synthèse vocale + audios aléatoires dans Anki!

Hello tout le monde,

Deux petites astuces très chouettes que je viens de découvrir pour varier les audios automatiques de vos cartes Anki.

Comme beaucoup sur le forum, j’utilise depuis bientôt 2 ans l’add-on « Chinese Support Redux » pour générer automatiquement des audios sur mes cartes Anki — pour ça il utilise la synthèse vocale de Google ou bien d’autres sites comme Baidu.

Problème, récemment j’ai commencé à trouver que les audios traînent un peu en longueur, surtout pour des mots très connus. Je voulais trouver un moyen de les accélérer mais c’est impossible dans AnkiMobile (sur iPhone et iPad).

Alors comment faire?? Et bien sur les versions récentes de Anki (depuis Anki 2.1.20 sur ordi, et AnkiMobile 2.0.56) il est possible d’utiliser la synthèse vocale embarquée (Text-to-Speech ou TTS pour les intimes) sur votre appareil !
Tout est expliqué ici : Field Replacements - Anki Manual

Si vous avez suivi la fabrication de carte des tutoriels vidéos d’Alex, il suffit de remplacer le champ {{Audio}} par l’une des options suivantes. Vous pouvez aussi voir si votre appareil vous donne d’autres options en tapant {{tts-voices:}} : les différentes langues et voix proposées seront directement visibles sur votre carte Anki, il ne reste plus qu’à copier.

Ça ressemble à ça dans la fenêtre de prévisualisation de carte :


Pour le chinois, il faut chercher en bas de la liste des articles qui commencent par :

  • {{tts zh_CN… (pour le mandarin)
  • {{tts zh_TW… (pour la variante Taiwan que je vais aussi intégrer pour voir)
  • {{tts zh_HK… (pour le cantonais)

Sur mon iPad j’ai ces quatre voix là de disponible :

  {{tts zh_CN voices=Apple_Ting-Ting:Hanzi}}
  {{tts zh_CN voices=Apple_Li-mu:Hanzi}}
  {{tts zh_CN voices=Apple_Yu-shu:Hanzi}}
  {{tts zh_TW voices=Apple_Mei-Jia:Hanzi}}

Bien sûr, il vous faudra remplacer ici le mot Hanzi si le nom de votre champ de caractère chinois est différent !

Notez que certaines voix ne marcheront pas sur Mac (j’ai pas compris pourquoi) donc il faut faire des tests sur iPhone / iPad pour décider la voix qui vous intéresse. (je n’ai pas testé sur Android !)

Personnellement je préfère Apple_Yu-shu à la voix par défaut Apple_Ting-Ting, mais dans certains cas les résultats sont inégaux… J’aime bien aussi Apple_Li-mu qui donne une voix masculine.
Et la voix taiwanaise ne peut pas faire de mal j’imagine…

Mais alors, si plusieurs voix vous plaisent, et si vous voulez en même temps continuer d’utiliser la voix Google de Chinese Support Redux, comment faire???

Et bien voici une seconde méthode très cool que j’ai découverte en posant la question hier sur le forum Anki :

Elle permet de déclencher aléatoirement seulement l’un des sons disposés sur votre carte.

Il suffit de rajouter ce petit script au dessus de la carte en question, puis de lister plusieurs options de sons.

    <script>
    {
    		    function randomInt(max) {
    		        	return Math.floor(Math.random() * max);
		    }	
		    const audios = [...document.querySelectorAll(".soundLink")];
		    audios[randomInt(audios.length)].click();
    }
    </script>

    <div style='font-family: Hoefler Text; font-size: 70px;'>{{Pinyin}}</div>

    {{Audio}}
    {{tts zh_CN voices=Apple_Ting-Ting:Hanzi}}
    {{tts zh_CN voices=Apple_Li-mu:Hanzi}}
    {{tts zh_CN voices=Apple_Yu-shu:Hanzi}}
    {{tts zh_TW voices=Apple_Mei-Jia:Hanzi}}

En l’occurence j’ai mis mon champs {{Audio}} (celui qui est rempli automatiquement par Chinese Support Redux) et aussi les 4 options de TTS disponibles sur iPad.
À chaque fois qu’une carte apparaît, on entend donc seulement l’un des sons.

Voici à quoi ça ressemble chez moi dans Anki

Vous allez voir maintenant 5 boutons de son, mais seulement un sera déclenché à la lecture de la carte. Il suffit de copier la même chose dans chacune des carte qui vous intéresse : moi je l’ai mis dans les 3 sens, pour chaque côté (question ou réponse) qui normalement jouerait un audio.

**ATTENTION : Pour les decks où vous utiliserez cette fonction, peut-être que vous aurez besoin d’activer les deux options Audio ci-dessous. Je suis pas certain que ce soit obligatoire, mais à tester si tout ne fonctionne pas comme prévu **

Voilà, l’intérêt pour moi c’est évidemment la variété, et aussi ce que je voulais à la base : les voix TTS sont un peu plus rapides et nerveuses / « punchy » par défaut.
Mais vous pouvez toujours les ralentir en suivant ce modèle :

    {{tts zh_CN voices=Apple_Ting-Ting speed=0.8:Hanzi}}

(ou 0.8 indique un léger ralentissement par rapport à la vitesse normale qui est notée 1.0)

À noter pour finir que les voix vont parfois dire les tons de vos pinyins un peu différemment, suivant l’algorithme, mais aussi évidemment de manière imprévisible pour les caractères polysémiques et / ou à multiples prononciations. Dans ce cas, à vous de décider si c’est la bonne solution pour vous ! :wink:

5 « J'aime »

C’est super comme méthode pour générer des audios.

Est-ce que quelqu’un sait comment l’adapter sous ankidroid avec le TTS ?

1 « J'aime »

Normalement ça devrait marcher, c’est du html il prend juste les voix qui sont dispos. Tu as essayé d’inclure un {{tts-voices:}} dans le code de ta carte?

Si ça marche après synchro sur AnkiDroid tu devrais voir s’afficher une longue liste de voix disponibles. Après il faut sélectionner…

1 « J'aime »

Hm apparemment c’est un peu différent :
https://docs.ankidroid.org

Cherche Text to Speech ou TTS et ils donnent toutes les instructions.

1 « J'aime »

C’est bon, ça fonctionne.

Par défaut sur ankidroid (quand on coche dans les paramètres avancés « synthèse vocale »), la lecture se fait sur tous les champs du recto et du verso de la carte.

Pour ne lire que le champ qui m’intéresse, j’ai taper ces lignes de codes dans le verso (le champ du recto est la définition) :

2 « J'aime »

Bonjour à tous,

Je ne sais pas si c’est vraiment le bon endroit pour répondre, mais j’ai le même souci sur mon pc.
En fait je fais les cartes sur ordinateur, mais je lis ensuite les cartes soit sur ordinateur, soit sur ankiweb. Et depuis les mises à jour, les dernières ne prennent pas en charge le greffon Chinese Support Redux. J’ai donc gardé la dernière version compatible et je ne mets pas à jour. Sauf que, les audios ne se jouent plus, ou pas tous… ça me met que les médias sont manquants, mais impossible de les trouver dans mes documents comme je l’ai lu dans la réponse d’Alex à un autre post.
J’ai donc essayé avec awesome TTS, mais à chaque fois que je réussi à générer un fichier audio, par exemple à partir de Microsoft Speech API Com, ça ajoute bien le fichier son, mais impossible de le lire ensuite…

J’ai systématiquement ce message d’erreur, qu’importe la source des fichiers audios, j’ai aussi essayé via google translate ou baidu speech (mais celui-là ils demandent une clé API… je ne sais pas ce que c’est)
image

Bref, je désespère…

Je te réponds dans le désordre :

  1. Chinese Support Redux (dernière version de 2021 0.14.2) marche parfaitement sur une version récente de Anki sur mac (Je suis 2.1.65 et la toute dernière est 2.1.66). Ça m’étonnerait que ça ne marche pas sur Windows… mais sinon je ne peux pas t’aider :frowning:

  2. Si les médias sont manquants, c’est que tout simplement le plugin à l’époque (dans l’état de ta version ancienne Anki + plugin) n’arrivait pas à joindre Google pour générer les sons. Donc il génère à la place des fichiers audios vide. Si tu vas chercher dans les profondeurs de ton ordi là où Anki stock ses médias, tu devrais voir pleins de fichiers à 0Ko, c’était le cas pour moi quand le plugin était buggé.

Je n’ai jamais utilisé Awesome TTS mais il doit avoir le même problème si tu ne mets pas à jour, car les API (en gros le langage pour communiquer entre ton plugin et la plateforme google ou microsoft qui génère les sons) n’est plus à jour. Ils changent tout le temps de protocole c’est pour ça qu’il faut impérativement la dernière version.

  1. Donc je te conseille
    a) de mettre à jour Anki ET le plugin Chinese Support Redux
    b) effacer tous les fichiers audio vides de ton dossier Anki media (0 ko)
    c) dans le navigateur de cartes d’Anki, pour tous les fichiers sons pour lesquels tu n’entendais pas d’audio (et que tu viens d’effacer de l’ordi), d’effacer le champs audio puis de relancer Chinese Support Redux pour regénérer le son. Chez moi je le fais à la main en cliquant dans le champs Hanzi tout en haut puis en appuyant sur tab

J’espère que ça aide !

2 « J'aime »