Categories: french

View topic page - RSS - Atom - Subscribe via email

La semaine du 16 au 22 mars

| french

lundi 16

J'ai emmené ma fille chez le dentiste pour un nettoyage. L'hygiéniste a pensé que la douleur pouvait être due au fait que de nouvelles dents poussaient. J'ai laissé ma fille décider si elle voulait du fluor. Au début, elle a décliné, mais elle a changé d'avis et elle a dit oui. Après cela, elle s'en est plainte, mais au moins, elle l'a fait. En guise de récompense, nous avons acheté des nouilles instantanées.

J'étais trop optimiste quant à la météo parce qu'il faisait beau le matin. Quand je faisais du vélo, j'avais un peu froid. J'ai emmené ma fille dans la boutique qui proposait la boîte de déjeuner qu'elle voulait, et elle a confirmé son choix. Ensuite, j'ai emmené ma fille à son cours de gymnastique. Nous sommes arrivées si tôt que le gymnase était encore fermé à clé. Heureusement, son entraîneur est arrivé et il nous a ouvert la porte. Une fois rentrées, j'ai bu un chocolat chaud pour me réchauffer.

Nous avons réussi à faire des sons pour la machine à espresso en jouet avec l'aide de l'IA Claude. Au début, nous avons essayé d'utiliser un signal analogique, mais le micro:bit ne pouvait pas envoyer un véritable signal analogique. Au lieu de cela, il utilisait la modulation de largeur d'impulsion (pulse-width modulation), qui était un peu difficile à lire du côté de l'Arduino, peut-être en raison de l'écart de tension. Ensuite, nous avons essayé de varier la durée d'impulsion, ce qui était plus facile à détecter du côté de l'Arduino. Du côté du micro:bit, j'ai dû gérer les rebonds du bouton-poussoir pour rendre la logique plus fiable.

Ma fille a adoré sa nouvelle boîte de déjeuner. Elle l'a remplie de collations.

Après le dîner, nous avons cousu ensemble. La pochette Pokémon prend vraiment forme maintenant. Je ne sais pas trop si je dois laisser les passants en l'état ou si je dois découdre les coutures et les intégrer directement aux lignes de couture. Ma fille a préféré l'option d'attacher une sangle à la pochette pour faire un sac à bandoulière, ou de la détacher pour glisser la pochette au fond de son sac à dos.

mardi 17

Il faisait froid, donc nous sommes restés à la maison et nous avons travaillé sur notre projet de machine à espresso en jouet. Ça fonctionne bien. Nous avons enregistré un son pour l'eau et un autre son pour le lait, nous les avons copiés sur l'Arduino et nous avons modifié notre logiciel pour jouer les sons. Notre fille était très heureuse. Elle m'a vendu deux tasses de café.

J'ai eu un cours avec mon tuteur où je me suis exercée aux virelangues. Les mots difficiles sont : grenouille, fouille, feuille et broussailles. Ma fille s'est jointe à moi et elle a essayé des mots.

Ma fille aime bien quand nous portons des chaussures ou des vêtements similaires. Heureusement, je peux porter des chaussures pour enfants et nous pouvons coudre nos propres vêtements, donc si elle veut être assortie, alors nous serons assorties. Cette année, elle a choisi des Crocs Pokémon. Nos sandales flamboyantes Pokémon sont arrivées aujourd'hui. Elles sont très roses. Très très roses.

Mon mari avait rendez-vous chez le dentiste pour son nettoyage. Il a dit que l'hygiéniste dentaire portait un masque procédural, mais elle a changé pour un masque N95 parce qu'elle s'est souvenue que notre famille prend des précautions contre la COVID. Je pense que je vais changer de dentiste parce qu'elle a baissé brièvement son masque en parlant, ce qui signifie que nos niveaux de précaution sont différents. La clinique dentaire est le seul endroit où nous devons retirer nos masques. J'ai cherché dans le groupe de précaution COVID et j'ai trouvé une recommandation pour une clinique dentaire à proximité où le personnel porte normalement des masques N95. Je vais y aller pour mon prochain nettoyage. Ma fille veut voir l'hygiéniste dentaire qui nettoie les dents de mon mari, parce qu'il la recommande vivement.

On m'a appelée au sujet de l'examen Holter que la cardiologue de ma fille a prescrit. Elle nous a dit qu'il fallait que ma fille porte l'appareil Holter pendant deux semaines. Ma fille a fait un blocage, donc j'ai refusé l'appareil. Après réflexion, elle a négocié certaines contreparties comme beaucoup de livres de la bibliothèque et de nouveaux jouets pour les étapes en cours de route. Je suis tellement fière d'elle parce qu'elle a décidé de privilégier la santé au confort et qu'elle a essayé son propre système de motivation. Je sais que ces choses sont difficiles, mais elle prend ses propres décisions.

OBS n'a pas enregistré mon côté de l'audio, donc je ne peux pas l'analyser.

mercredi 18

J'ai eu une réunion virtuelle avec mes clients pour discuter du nouveau prototype qu'ils veulent que je crée. Je pense que c'est possible. Cette semaine est chargée puisque ma fille est en vacances. Je vais y travailler la semaine prochaine. J'ai probablement quelques extraits de code que je peux combiner.

J'ai emmené ma fille au Musée d'art contemporain pour une activité gratuite avec ses amies. Nous avons sculpté des figurines dans du papier aluminium. Ma fille a également réalisé une pancarte avec son nom et quelques Pokémon. J'ai aussi dessiné et colorié un Pikachu et un Qulbutoké (Wobbuffet en anglais).

Mon mari a utilisé Claude pour l'aider sur un projet de chambre de pousse à levain. Il a dit que l'IA était très utile pour échanger des idées. Il a réussi à connecter un Arduino Uno à un afficheur. Nous avons appris des choses sur les effets Seebeck et Peltier, qui sont utiles pour gérer la température du levain.

J'ai appelé l'entreprise qui fournit les appareils Holter pour lancer les démarches. L'appareil arrivera la semaine prochaine ou la semaine suivante. Nous avons besoin de beaucoup de livres comme promis. J'ai actualisé mon script pour réserver des livres à la bibliothèque.

jeudi 19

Ma fille a passé une mauvaise nuit, donc elle et moi étions un peu fatiguées quand nous nous sommes réveillées. J'ai reçu un message du père de son amie pour nous inviter à aller patiner ensemble, mais je me suis dit que la patinoire serait fermée parce qu'il faisait trop chaud pour préserver la glace.

Ma fille voulait aller à l'aquarium depuis le début des vacances. Il faisait beau. C'était un jour parfait pour faire du vélo. Nous sommes tous allés à l'aquarium Ripley's pour le visiter avec une amie de ma fille et son père. Elles ont aimé les requins et les raies. Mon mari en a profité pour faire quelques photos. Je me suis amusée à découvrir les poissons qui ont des noms intéressants comme le sigan magnifique (magnificent rabbitfish), le nason élégant (elegant unicornfish), le dollar des sables excentrique (eccentric sand dollar), et le miroir à bandes (stripey).

Pour le dîner, j'ai préparé des burgers et des frites. Il faisait froid, donc les burgers ont pris plus de temps à cuire au barbecue. Mon mari a préparé de la salade de chou.

Je me suis rendu compte que l'accéléromètre de mon téléphone ne fonctionne pas, ce qui explique pourquoi mes photos ne tournent pas automatiquement et que je ne peux pas faire de la réalité augmentée. C'est ma faute. Je ne veux pas remplacer mon téléphone pour l'instant. Peut-être d'ici deux ans.

vendredi 20

Pendant mon cours avec le tuteur, je me suis exercée aux virelangues et à lire à voix haute presque toutes mes entrées de journal depuis lundi. Malheureusement, le cours précédent n'était pas enregistré, donc je ne peux pas les comparer. Du côté positif, j'ai finalement appris comment configurer OBS pour enregistrer des pistes séparées, ce qui facilitera leur analyse et leur extraction la semaine prochaine.

(subed-record-extract-all-approximately-matching-phrases
   (split-string (org-file-contents "/home/sacha/proj/french/analysis/virelangues-2026-03-13/phrases.txt") "\n")
   "/home/sacha/sync/recordings/2026-03-20-raphael.json"
   "/home/sacha/proj/french/analysis/virelangues-2026-03-13/2026-03-20-raphael-script.vtt")

La pluie s'est arrêtée, donc j'ai emmené ma fille au centre médical pour faire une radiographie que la médecin avait prescrite pour rechercher la cause de ses symptômes. Après cela, ma fille a joué dans la salle de jeux. Elle aime bien le skee-ball et elle a obtenu son meilleur score jusqu'à présent. Elle s'est aussi rendu compte que le jeu de pêche lui a donné plus de jetons que le skee-ball ou d'autres jeux qu'elle aime, et puisqu'elle aime le jeu de pêche, elle a gagné suffisamment de jetons pour obtenir beaucoup de bonbons.

Nous avions le temps, donc je l'ai emmenée au magasin de tissus du centre-ville. Nous n'avons pas trouvé de tissu pour maillot de bain de la couleur que ma fille voulait, mais elle a trouvé du tissu vichy rouge pour coudre une couverture de pique-nique qu'elle voulait depuis longtemps. Dans un autre magasin à proximité, elle a acheté de la crème solaire, des élastiques, et un gloss à lèvres.

Ma fille a encore fait quelques peintures en utilisant du ruban pour masquer des zones. J'étais ravie de voir qu'elle s'est amusée grâce à l'art.

samedi 21

Nous avons fait les courses ensemble. Ma fille voulait acheter la collation Nutella Go depuis longtemps, donc elle et moi avons continué notre chemin un peu plus loin que la maison et nous sommes allées au magasin du coin.

J'ai réfléchi à une interface pour écouter et enregistrer un mot isolé que je veux pratiquer. Je pense que la forme d'onde n'est pas très utile dans cette situation.

Mon mari a installé deux lumières à côté du lit mezzanine de ma fille parce qu'elle aime lire à l'heure du coucher.

Il a aussi encadré le dessin que ma fille avait peint hier soir. Elle a essayé de photocopier son dessin, mais comme prévu, la peinture argentée est devenue simplement grise. C'est une bonne chose que l'artiste aime bien peindre. Nous pourrons ainsi avoir chacun notre original.

Pour le dîner, mon mari et moi avons préparé des spaghettis à la sauce carbonara et au bacon. Après ça, nous avons préparé des petits pains aux haricots rouges. Ma fille s'est bien amusée à jouer avec la pâte. Les pains étaient délicieux. J'ai brûlé une fournée, mais après avoir gratté le dessus, c'était acceptable.

J'ai un peu mal à la tête, donc je me suis ménagée.

dimanche 22

Il pleuvait, donc nous sommes restés à la maison.

Ma fille a attaché ses dessins au mur avec du ruban adhésif. Elle m'a dicté leurs titres et explications, et nous les avons imprimés et affichés comme dans un musée.

J'ai cousu une housse de protection pour l'un des radiateurs en utilisant la majeure partie de ma toile restante.

J'ai essayé de préparer une autre pâte à petits pains aux haricots rouges comme hier, mais la pâte ne s'étirait pas. J'ai pensé qu'elle était trop travaillée, donc je l'ai donnée à ma fille pour qu'elle s'amuse avec et j'ai préparé une autre fournée. Cette fois, elle s'étirait un peu mieux. Je suppose que pour cette recette, le pétrissage à la main est meilleur qu'à la machine.

Ma fille et moi avons aidé mon mari à accrocher un grand dessin brodé dans l'escalier. Malheureusement, il a fait tomber le petit niveau de sa plateforme improvisée sur ma tête, mais ce n'était pas grave. Après ça, j'ai porté mon casque de vélo.

J'étais très fatiguée, donc j'ai fait une sieste. Ma fille a essayé de me réveiller pour des biscuits et du chocolat chaud, mais j'ai continué à dormir. Tant pis pour moi.

Pour le dîner, mon mari a préparé des nouilles ramen aux wontons. C'était le plat parfait pour ce genre de journée.

J'ai fini les petits pains aux haricots rouges après le dîner. À mon soulagement, ils étaient réussis.

J'ai emprunté un livre électronique en français à la bibliothèque qui correspond à la série d'émissions que j'avais vues. J'ai besoin de chercher quelques mots dans le dictionnaire, mais c'est un autre petit pas en avant. Le livre électronique que j'ai emprunté a des DRM, donc je ne peux pas télécharger l'EPUB directement. Si je cherche des livres du domaine public, je peux utiliser une bibliothèque JavaScript pour afficher les EPUB dans une page et traiter les clics pour traduire les mots et sauvegarder un historique.

View Org source for this post

La semaine du 9 au 15 mars

| french

lundi 9 mars

Il faisait très beau et le soleil brillait. Je me suis assise sur le porche et j'ai réécrit mon journal et mes notes sur l'IA en français.

Après l'école, ma fille n'a pas voulu aller à son cours de gymnastique parce qu'elle avait mal au ventre. Elle est restée un petit moment, puis nous sommes allées au parc avec le réchaud de camping, des guimauves, et des biscuits au chocolat pour faire des s-mores. J'ai envoyé des messages à ses amies, mais je n'ai pas reçu de réponse. Néanmoins, si personne ne peut venir, nous pouvons toujours nous en préparer. Par coïncidence, personne n'a reçu mon message à temps, mais toutes ses amies nous ont trouvées. J'ai donné des guimauves aux filles et au grand-père d'une amie de ma fille. Nous les avons fait griller sur des brochettes. On s'est régalés. C'était une fête d'anniversaire inattendue, parce que ses amies étaient tombées malades juste avant la fête planifiée le mois précédent.

Après un dîner de burgers et de frites, nous avons cousu ensemble. Ma fille et moi avons travaillé sur la pochette Pokémon et mon mari a réparé un sac d'épicerie.

La bosse près du piercing de ma fille a commencé à saigner et suppurer. Normalement, elle dormait sur le dos, mais elle n'a pas pu contrôler sa position pendant son sommeil et de temps en temps, elle dormait probablement sur le côté. Je l'ai nettoyée avec une solution saline.

mardi 10 mars

Ma fille était de mauvaise humeur parce que l'école avait une remplaçante et qu'elle avait quelques douleurs. Elle n'a pas voulu participer en classe l'après-midi.

J'avais un rendez-vous avec mon tuteur, pendant lequel j'ai pratiqué ma prononciation à l'aide de mes notes sur l'IA. J'ai mis les mots que je prononce mal en gras. Après le rendez-vous, j'ai écrit des fonctions pour extraire les mots gras avec leurs contextes et les enregistrer dans mes notes au format Org Mode pour les revoir. Ma prochaine étape est de rendre plus facile l'écoute des mots enregistrés.

J'ai aussi travaillé sur mon serveur de synthèse vocale qui est compatible avec speechd. Kokoro TTS est trop lent pour un usage général, mais sa qualité est meilleure que celle d'espeak, donc je veux l'utiliser pour les textes longs pour lesquels une brève pause avant le début n'est pas un problème. Le serveur Kokoro FastAPI utilise l'interface de synthèse vocale d'OpenAI, donc si je l'implémente pour Kokoro, les autres services comme OpenAI fonctionnent aussi.

Ma fille s'est endormie sur le canapé. Elle n'a pas voulu être portée à l'étage.

mercredi 11 mars

Ma fille s'est plainte de quelques symptômes, ma pauvre chérie. Elle a mal à la tête, au ventre et à un genou. Elle ne dort pas mieux… Elle ne va pas mieux. Elle semble traverser une période difficile. Je ne m'attends pas à grand-chose aujourd'hui.

J'ai participé à la réunion virtuelle OrgMeetup. J'ai présenté mes fonctions pour mettre un lien vers le fichier audio et l'écouter, mettre un lien automatique à partir de mes favoris, et télécharger et convertir les éléments de mes notes partagées avec mon tuteur sur Google Docs. J'ai aussi envoyé un correctif pour l'opération « sentence-at-point » dans Org Mode. J'ai travaillé davantage sur mon serveur speechd-ai qui est capable de se connecter aux serveurs compatibles avec le service de synthèse vocale d'OpenAI, mais ça ne fonctionne pas encore complètement.

Ma fille a raté la première partie de son cours à cause de problèmes de santé, mais elle a rejoint le cours à temps pour obtenir un score parfait au test de français. Elle a aussi travaillé le piano pendant le cours de musique. Elle était très fière de ses accomplissements. Elle s'est amusée à essayer quelques expressions en français. « Je suis une pomme de terre de canapé » dit-elle. Ce n'est pas l'expression idiomatique. ( Mon tuteur dit qu'il n'utilise ni cette expression ni « une patate de canapé. » Il pense que « pantouflarde » est peut-être mieux. ) Mais c'est bien qu'elle joue et lance des idées.

Après le dîner, ma fille et moi avons fait une sortie pour activer le PokéStop dans le coin. Très brève, mais au moins, elle a marché.

J'ai imprimé ses devoirs parce qu'elle préfère travailler sur papier plutôt que sur l'écran. Je l'ai aussi aidée à rassembler quelques informations pour son projet d'affiche.

J'ai trouvé que la reconnaissance vocale était utile quand ma fille a voulu un câlin pendant qu'elle faisait autre chose. Elle dit souvent, « Tu es toute chaude. » Mes bras sont trop courts pour taper pendant un câlin. Eh bien, je peux lui donner un câlin tandis que je saisis mes pensées, grâce à la reconnaissance vocale. Elle est curieuse de l'IA, donc de temps en temps, j'utilise la reconnaissance pour interroger l'IA ensemble.

Ma fille a essayé de demander à l'IA de corriger des bugs dans l'histoire interactive sur des farces de Pokémon. Elle était censée suivre le temps pendant l'aventure, mais les totaux étaient erronés. Je suis ravie de voir qu'elle remarque des erreurs et explique à l'IA les changements qu'elle veut.

jeudi 12 mars

Ma fille a voulu acheter une nouvelle boîte à lunch qui ne permet pas aux liquides de se mélanger, parce que nos boîtes actuelles ont de petits trous sous les cloisons et ses craquelins étaient tous mous de temps en temps. Malheureusement, je l'ai emmenée à l'ancienne adresse du magasin, qui a déjà fermé. Elle devra attendre une autre promenade.

Je me suis perdue dans les détails du travail sur le serveur de synthèse vocale qui est compatible avec speechd.

J'ai créé des fonctions pour rassembler mes tentatives de virelangues dans plusieurs fichiers.

vendredi 13 mars

Elle est venue se blottir contre moi toute la nuit. Elle a accaparé toutes les couvertures. Néanmoins, je l'aime encore.

Mon tuteur m'a donné de nouveaux virelangues pour travailler sur ma prononciation.

  • Mon oncle peint un grand pont blanc.
    {mɔ̃n ˈɔ̃kl pˈɛ̃ œ̃ ɡʁˈɑ̃ pˈɔ̃ blˈɑ̃.}
  • Un singe malin prend un bon raisin rond.
    {œ̃ sˈɛ̃ʒ malˈɛ̃ pʁˈɑ̃t œ̃ bˈɔ̃ ʁɛzˈɛ̃ ʁˈɔ̃.}
  • Dans le vent du matin, mon chien sent un bon parfum.
    {dɑ̃ lə vˈɑ̃ dy matˈɛ̃, mɔ̃ ʃjˈɛ̃ sˈɑ̃ œ̃ bˈɔ̃ paʁfˈœ̃.}
  • Le soin du roi consiste à joindre chaque coin du royaume.
    {lə swˈɛ̃ dy ʁwˈa kɔ̃sˈist a ʒwˈɛ̃dʁ ʃak kwˈɛ̃ dy ʁwajˈom.}
  • Dans un coin du bois, le roi voit trois points noirs.
    {dɑ̃z œ̃ kwˈɛ̃ dy bwˈa, lə ʁwˈa vwˈa tʁwˈa pwˌɛ̃ nwˈaʁ.}
  • Le feu de ce vieux four chauffe peu.
    {lə fˈø də sə vjˈø fˈuʁ ʃˈof pˈø.}
  • Deux peureux veulent un peu de feu.
    {dˈø pøʁˈø vˈœlt œ̃ pø də fˈø.}
  • Deux vieux bœufs veulent du beurre.
    {dˈø vjˈø bˈø vˈœl dy bˈœʁ.}
  • Elle aimait marcher près de la rivière.
    {ɛl ɛmˈɛ maʁʃˈe pʁɛ də la ʁivjˈɛʁ.}
  • Je vais essayer de réparer la fenêtre.
    {ʒə vˈɛz esɛjˈe də ʁepaʁˈe la fənˈɛtʁ.}
  • Le bébé préfère le lait frais.
    {lə bebˈe pʁefˈɛʁ lə lˈɛ fʁˈɛ.}
  • Charlotte cherche ses chaussures dans la chambre.
    {ʃaʁlˈɔt ʃˈɛʁʃ se ʃosˈyʁ dɑ̃ la ʃˈɑ̃bʁ.}
  • Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
    {œ̃ ʃasˈœʁ saʃˈɑ̃ ʃasˈe sɑ̃ sɔ̃ ʃjˈɛ̃ ɛtil œ̃ bˈɔ̃ ʃasˈœʁ ?}
  • Le journaliste voyage en janvier au Japon.
    {lə ʒuʁnalˈist vwajˈaʒ ɑ̃ ʒɑ̃vjˈe o ʒapˈɔ̃.}
  • Georges joue du jazz dans un grand bar.
    {ʒˈɔʁʒ ʒˈu dy ʤˈaz dɑ̃z œ̃ ɡʁˈɑ̃ bˈaʁ.}
  • Un jeune joueur joue dans le grand gymnase.
    {œ̃ ʒˈøn ʒwˈœʁ ʒˈu dɑ̃ lə ɡʁˈɑ̃ ʒimnˈaz.}
  • Le compagnon du montagnard soigne un agneau.
    {lə kɔ̃panjˈɔ̃ dy mɔ̃tanjˈaʁ swˈaɲ œ̃n anjˈo.}
  • La cigogne soigne l’agneau dans la campagne.
    {la siɡˈɔɲ swˈaɲ lanjˈo dɑ̃ la kɑ̃pˈaɲ.}
  • La grenouille fouille les feuilles dans la broussaille.
    {la ɡʁənˈuj fˈuj le fˈœj dɑ̃ la bʁusˈaj.}
  • La vieille abeille travaille dans la broussaille.
    {la vjˈɛj abˈɛj tʁavˈaj dɑ̃ la bʁusˈaj.}

J'ai ajouté une version grasse de la police de caractères Open Sans sur mon site, qui aide à remarquer le contraste entre les mots gras et les mots normaux.

J'ai besoin de corriger un petit bug dans mon correctif pour Org Mode.

Ma fille m'a aidée à déneiger le trottoir et la terrasse en bois. La neige était lourde à cause de la pluie verglaçante.

Après le dîner, ma fille et moi avons cousu ensemble. Elle a voulu fabriquer un petit sac à remplir de riz et de lavande, comme sa peluche d'axolotl chauffante. J'ai aussi continué à coudre le sac Pokémon.

samedi 14 mars

Ma fille a voulu m'aider à préparer des crêpes pour le petit-déjeuner. Elle a réussi à préparer des crêpes toute seule la fois précédente. Mais les deux premières crêpes ont collé à la poêle. Je me demande si ce n'était pas à cause de l'ajout de lait supplémentaire pour finir le carton de lait, et s'il vaut mieux que nous suivions un peu plus la recette la prochaine fois. J'ai essayé de gratter les morceaux collés avec la spatule à crêpes en bois, mais une partie était bien collée. Elle m'a demandé si elle pouvait l'essayer aussi. J'ai dit que non parce que j'ai enlevé tous les morceaux faciles et j'ai voulu ajouter de l'eau pour ramollir le reste. J'étais stressée car je devais aussi attendre un appel du médecin à propos des symptômes de ma fille. Elle n'a pas voulu écouter « non ». Elle est devenue très grincheuse parce qu'elle a eu l'impression que je l'avais critiquée. Elle est partie furieuse et elle était fâchée contre moi toute la journée, sauf quelques brefs moments. Je lui ai écrit un message pour lui présenter mes excuses. Avec le recul, peut-être que j'aurais mieux fait de la laisser essayer la prochaine fois. Mais c'est aussi important d'apprendre que si nous cuisinons ensemble, de temps en temps, il faut que je dise « non » ou « pas pour le moment. » De toute façon, elle s'est déridée le soir.

J'ai analysé les enregistrements du rendez-vous d'hier. Mon code pour chercher des correspondances approximatives entre la liste des phrases et la transcription était très utile.

(subed-record-extract-all-approximately-matching-phrases
   phrases
   "/home/sacha/sync/recordings/2026-03-13-raphael.json"
   "/home/sacha/proj/french/analysis/virelangues/2026-03-13-raphael-script.vtt")
(my-subed-record-analyze-file-with-azure
  (subed-record-filter-skips
   (subed-parse-file
    "/home/sacha/proj/french/analysis/virelangues/2026-03-13-raphael-script.vtt"))
 "~/proj/french/analysis/virelangues-2026-03-13/2026-03-13-all"
 "/home/sacha/proj/french/analysis/virelangues/2026-03-13-raphael-script.vtt")
File ID Comments All Acc Flu Comp Conf  
▶️ 1 X: pont 83 94 79 86 86 Mon oncle peint un grand pont blanc. {pont}
▶️ 2 X: peint 92 94 89 100 87 Mon oncle peint un grand pont blanc. {peint}
▶️ 3 X: pont 93 99 90 100 86 Mon oncle peint un grand pont blanc. {pont}
▶️ 4 X: raisin 76 82 70 88 87 Un singe malin prend un bon raisin rond. {raisin}
▶️ 5 C'est mieux 68 75 80 62 87 Un singe malin prend un bon raisin rond.
▶️ 6 X: parfum 75 92 62 100 89 Dans le vent du matin, mon chien sent un bon parfum. {parfum}
▶️ 7 X: parfum 71 99 53 100 89 Dans le vent du matin, mon chien sent un bon parfum. {parfum}
▶️ 8 Ouais, c'est ça 83 94 78 91 89 Dans le vent du matin, mon chien sent un bon parfum.
▶️ 9 ok 75 86 63 100 89 Le soin du roi consiste à joindre chaque coin du royaume.
▶️ 10 Ouais, c'est bien 80 94 72 91 88 Dans un coin du bois, le roi voit trois points noirs.
▶️ 11 Ouais, c'est ça, parfait 83 94 74 100 88 Dans un coin du bois, le roi voit trois points noirs.
▶️ 12 Mm hmm 95 94 94 100 84 Le feu de ce vieux four chauffe peu.
▶️ 13 Ouais, parfait 90 92 87 100 86 Le feu de ce vieux four chauffe peu.
▶️ 14   82 93 78 86 84 Deux peureux veulent un peu de feu.
▶️ 15 Ouais 77 85 88 71 86 Deux peureux veulent un peu de feu.
▶️ 16 X: bœufs 84 84 91 83 86 Deux vieux bœufs veulent du beurre. {bœufs}
▶️ 17   77 78 75 83 85 Deux vieux bœufs veulent du beurre.
▶️ 18 Ouais, parfait 92 94 89 100 89 Elle aimait marcher près de la rivière.
▶️ 19 Ok, c'est bien 93 98 89 100 90 Je vais essayer de réparer la fenêtre.
▶️ 20 X: le bébé 75 86 70 83 85 Le bébé préfère le lait frais. {le bébé}
▶️ 21 Ouais, c'est bien 88 94 82 100 88 Le bébé préfère le lait frais.
▶️ 22 Okay 83 87 76 100 89 Le bébé préfère le lait frais.
▶️ 23 X: cherche 74 77 81 71 88 Charlotte cherche ses chaussures dans la chambre. {cherche}
▶️ 24   77 92 70 86 90 Charlotte cherche ses chaussures dans la chambre.
▶️ 25 Voila, c'est ça 88 95 83 100 88 Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
▶️ 26 Tu est forte 81 77 94 82 88 Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
▶️ 27 Oui 92 95 93 91 89 Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
▶️ 28 Okay 91 90 94 91 88 Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
▶️ 29 X: au Japon 76 85 86 71 87 Le journaliste voyage en janvier au Japon. {au Japon}
▶️ 30 X: en janvier 92 89 95 100 92 Le journaliste voyage en janvier au Japon. {en janvier}
▶️ 31 Ouais 91 88 92 100 91 Le journaliste voyage en janvier au Japon.
▶️ 32 X: jazz 90 93 93 88 88 Georges joue du jazz dans un grand bar. {jazz}
▶️ 33 X: dans un 84 85 83 88 85 Georges joue du jazz dans un grand bar. {dans un}
▶️ 34 C'est bien (X: dans un) 91 88 94 100 88 Georges joue du jazz dans un grand bar. {dans un}
▶️ 35 X: dans le grand gymnase 87 86 92 88 88 Un jeune joueur joue dans le grand gymnase. {dans le grand gymnase}
▶️ 36 C'est bien 88 87 94 88 85 Un jeune joueur joue dans le grand gymnase.
▶️ 37   77 84 68 100 89 Le compagnon du montagnard soigne un agneau.
▶️ 38 Ouais, c'est ça 85 93 78 100 89 Le compagnon du montagnard soigne un agneau.
▶️ 39   95 94 96 100 91 Le compagnon du montagnard soigne un agneau.
▶️ 40 X: cigogne 74 81 77 71 89 La cigogne soigne l’agneau dans la campagne. {cigogne}
▶️ 41   85 88 84 86 89 La cigogne soigne l’agneau dans la campagne.
▶️ 42   69 76 83 62 87 La grenouille fouille les feuilles dans la broussaille.
▶️ 43 grenouille 71 80 68 75 86 La grenouille fouille les feuilles dans la broussaille.

J'ai aussi ajouté les dernières tentatives à l'article « Comparing pronunciation recordings across time. »

Je pense que c'est mieux que de lire mon journal à voix haute pendant le rendez-vous parce que les phrases me permettent de me concentrer sur les sons difficiles, et mon nouveau code m'aide à suivre ma progression au fil des sessions. Ça signifie que mon journal contient peut-être des erreurs, mais ce n'est pas un problème. Selon ce long fil sur les IA sur Hacker News, c'est mieux d'être humain malgré mes erreurs.

J'ai modifié « subed-waveform » et « subed-record » pour afficher les étendues audio que je coupe. Si j'ajoute une fonction pour me permettre de faire glisser le curseur sur la forme d'onde pour créer ou ajuster la directive de coupe, je pense que ce sera très pratique.

J'ai ajouté des raccourcis clavier à mon tableau d'enregistrements de virelangues en français. Maintenant, je peux naviguer vers l'enregistrement suivant ou vers l'enregistrement précédent dans la même phrase ou entre les phrases. Je peux aussi sauter entre les enregistrements de la même phrase avec les chiffres 1 à 9, ce qui facilite tellement la comparaison entre deux versions.

Mon mari a retrouvé un peu plus de son énergie, donc il a fabriqué une machine à espresso en jouet que ma fille réclamait depuis longtemps au lieu d'en acheter une sur eBay pour environ 90 dollars. Il a utilisé du carton et du bois pour la construire. La machine en jouet était merveilleuse. Ma fille était très heureuse.

dimanche 15 mars

J'ai écrit du code JavaScript pour jouer un enregistrement en boucle avec une pause de deux fois sa longueur dans mes notes sur les virelangues. Ça facilite la pratique sur mon téléphone. En plus de mes extraits du rendez-vous précédent avec mon tuteur, j'ai aussi ajouté des références audio qui sont générées par les synthèses vocales de Google Traduction, de Kokoro, et d'Azure. Je préfère celles de Google Traduction au début parce qu'elles sont plus lentes, mais je pense que je peux configurer les autres services pour parler à la même vitesse. Je les ai utilisées pour travailler sur ma prononciation. Ma prochaine étape est d'inclure les phonèmes pour aider à remarquer les différences entre les voyelles.

J'ai préparé des crêpes épaisses pour le petit-déjeuner. Ma fille m'a aidée avec certaines étapes de la préparation.

Nous avons travaillé sur la machine à espresso en carton. Ma fille et moi avons utilisé le petit ordinateur micro:bit pour faire fonctionner des boutons, jouer des sons, et afficher les nombres et les animations en utilisant MicroPython. J'ai commencé avec l'interface Web, mais Ampy est mieux pour téléverser le code sur le micro:bit parce que je peux tout faire sans clics.

Ma fille a choisi cinq boutons et elle a dessiné des animations pour chaque commande :

  • Moudre
  • Eau
  • Lait
  • Vapeur
  • Café

Je suis particulièrement fière que le bouton pour l'eau simule le chauffage de l'eau en affichant la progression sur un afficheur à quatre chiffres à sept segments ( bien sûr plus rapidement qu'en vrai ), suivi d'une animation. Le logiciel simule aussi le refroidissement de l'eau après un certain temps. Le micro:bit a un thermomètre, donc si ma fille le veut, nous pouvons changer le logiciel pour utiliser la vraie température ambiante.

J'ai découpé des ouvertures dans le tableau de bord en carton et j'ai utilisé de la colle chaude pour coller les éléments. Mon mari a utilisé deux aimants pour coller le tableau de bord au châssis de la machine. Ça marche ! Ma fille s'est très bien amusée en préparant du café pour nous.

Voici le code : https://github.com/wjyoung65/toy_espresso_machine

Je veux essayer d'ajouter un module MP3 et une petite enceinte pour jouer un son de meilleure qualité. Ma fille a enregistré quelques sons de la préparation du café comme le bruit de l'eau qui coule ou qui bouillonne.

Mon mari a dépoussiéré un vieux petit ordinateur Arduino avec lequel son autre fille et lui avaient commencé un projet il y a plusieurs années. Il a réussi à diffuser des sons dans les écouteurs. Si nous pouvons nous connecter au micro:bit, la machine à espresso en jouet peut diffuser les sons que ma fille a enregistrés. J'ai hâte de l'essayer.

View Org source for this post

Comparing pronunciation recordings across time

Posted: - Modified: | french, emacs, org, subed
  • : Added reconstructions from today and moved more of the code to sachac/learn-lang.
  • : Added updates from today.
  • : Added reference audio for the second set.
  • : I added pronunciation segments for the new set of tongue-twisters I got on Mar 13.
  • : I added a column for Feb 20, the first session with the sentences. I also added keyboard shortcuts (1..n) for playing the audio of the row that the mouse is on.

2026-02-20: First set: Maman peint un grand lapin blanc, etc.

My French tutor gave me a list of sentences to help me practise pronunciation.

I can fuzzy-match these with the word timing JSON from WhisperX, like this.

Extract all approximately matching phrases
(subed-record-extract-all-approximately-matching-phrases
   sentences
   "/home/sacha/sync/recordings/2026-02-20-raphael.json"
   "/home/sacha/proj/french/analysis/virelangues/2026-02-20-raphael-script.vtt")
Sentences
  • Maman peint un grand lapin blanc.
  • Un enfant intelligent mange lentement.
  • Le roi croit voir trois noix.
  • Le témoin voit le chemin loin.
  • Moins de foin au loin ce matin.
  • La laine beige sèche près du collège.
  • La croquette sèche dans l'assiette.
  • Elle mène son frère à l'hôtel.
  • Le verre vert est très clair.
  • Elle aimait manger et rêver.
  • Le jeu bleu me plaît peu.
  • Ce neveu veut un jeu.
  • Le feu bleu est dangereux.
  • Le beurre fond dans le cœur chaud.
  • Les fleurs de ma sœur sentent bon.
  • Le hibou sait où il va.
  • L'homme fort mord la pomme.
  • Le sombre col tombe.
  • L'auto saute au trottoir chaud.
  • Le château d'en haut est beau.
  • Le cœur seul pleure doucement.
  • Tu es sûr du futur ?
  • Trois très grands trains traversent trois trop grandes rues.
  • Je veux deux feux bleus, mais la reine préfère la laine beige.
  • Vincent prend un bain en chantant lentement.
  • La mule sûre court plus vite que le loup fou.
  • Luc a bu du jus sous le pont où coule la boue.
  • Le frère de Robert prépare un rare rôti rouge.
  • La mule court autour du mur où hurle le loup.

Then I can use subed-record to manually tweak them, add notes, and so on. I end up with VTT files like 2026-03-06-raphael-script.vtt. I can assemble the snippets for a session into a single audio file, like this:

I wanted to compare my attempts over time, so I wrote some code to use Org Mode and subed-record to build a table with little audio players that I can use both within Emacs and in the exported HTML. This collects just the last attempts for each sentence during a number of my sessions (both with the tutor and on my own). The score is from the Microsoft Azure pronunciation assessment service. I'm not entirely sure about its validity yet, but I thought I'd add it for fun. * indicates where I've added some notes from my tutor, which should be available as a title attribute on hover. (Someday I'll figure out a mobile-friendly way to do that.)

Calling it with my sentences and files
(learn-lang-subed-record-summarize-segments
 sentences
 '(("/home/sacha/proj/french/analysis/virelangues/2026-02-20-raphael-script.vtt" . "Feb 20")
 ;("~/sync/recordings/processed/2026-02-20-raphael-tongue-twisters.vtt" . "Feb 20")
        ("~/sync/recordings/processed/2026-02-22-virelangues-single.vtt" . "Feb 22")
        ("~/proj/french/recordings/2026-02-26-virelangues-script.vtt" . "Feb 26")
        ("~/proj/french/recordings/2026-02-27-virelangues-script.vtt" . "Feb 27")
        ("~/proj/french/recordings/2026-03-03-virelangues.vtt" . "Mar 3")
        ("/home/sacha/sync/recordings/processed/2026-03-03-raphael-reference-script.vtt" . "Mar 3")
        ("~/proj/french/analysis/virelangues/2026-03-06-raphael-script.vtt" . "Mar 6")
        ("~/proj/french/analysis/virelangues/2026-03-12-virelangues-script.vtt" . "Mar 12"))
 "~/proj/french/analysis/virelangues/clip"
 #'learn-lang-subed-record-get-last-attempt
 )
Feb 20 Feb 22 Feb 26 Feb 27 Mar 3 Mar 3 Mar 6 Mar 12 Text
▶️ 63* ▶️ 96 ▶️ 95 ▶️ 94 ▶️ 83 ▶️ 83* ▶️ 81* ▶️ 88 Maman peint un grand lapin blanc.
▶️ 88* ▶️ 95 ▶️ 99 ▶️ 99 ▶️ 96 ▶️ 89* ▶️ 92* ▶️ 83 Un enfant intelligent mange lentement.
▶️ 84* ▶️ 97 ▶️ 97 ▶️ 96 ▶️ 94 ▶️ 95* ▶️ 98* ▶️ 99 Le roi croit voir trois noix.
▶️ 80* ▶️ 85 ▶️ 77 ▶️ 94 ▶️ 97   ▶️ 92* ▶️ 88 Le témoin voit le chemin loin.
▶️ 72* ▶️ 97 ▶️ 95 ▶️ 77 ▶️ 92   ▶️ 89* ▶️ 86 Moins de foin au loin ce matin.
▶️ 79* ▶️ 95 ▶️ 76 ▶️ 95 ▶️ 76 ▶️ 90* ▶️ 90* ▶️ 79 La laine beige sèche près du collège.
▶️ 67* ▶️ 99 ▶️ 85 ▶️ 81 ▶️ 85 ▶️ 99* ▶️ 97* ▶️ 97 La croquette sèche dans l'assiette.
▶️ 88* ▶️ 99 ▶️ 100 ▶️ 100 ▶️ 98 ▶️ 100* ▶️ 99* ▶️ 100 Elle mène son frère à l'hôtel.
▶️ 77* ▶️ 87 ▶️ 99 ▶️ 93 ▶️ 87   ▶️ 87* ▶️ 99 Le verre vert est très clair.
▶️ 100* ▶️ 94 ▶️ 100 ▶️ 99 ▶️ 99 ▶️ 99* ▶️ 100* ▶️ 100 Elle aimait manger et rêver.
▶️ 78* ▶️ 98 ▶️ 99 ▶️ 98 ▶️ 98 ▶️ 92*   ▶️ 88 Le jeu bleu me plaît peu.
▶️ 78* ▶️ 97 ▶️ 85 ▶️ 95 ▶️ 85     ▶️ 85 Ce neveu veut un jeu.
▶️ 73* ▶️ 95 ▶️ 95 ▶️ 96 ▶️ 97     ▶️ 100 Le feu bleu est dangereux.
▶️ 87* ▶️ 76 ▶️ 65 ▶️ 97 ▶️ 85 ▶️ 74* ▶️ 85* ▶️ 96 Le beurre fond dans le cœur chaud.
▶️ 84* ▶️ 43 ▶️ 85 ▶️ 79 ▶️ 75     ▶️ 98 Les fleurs de ma sœur sentent bon.
▶️ 70* ▶️ 86 ▶️ 79 ▶️ 76 ▶️ 87 ▶️ 84   ▶️ 98 Le hibou sait où il va.
▶️ 92* ▶️ 95 ▶️ 86 ▶️ 92 ▶️ 98 ▶️ 99*   ▶️ 94 L'homme fort mord la pomme.
▶️ 83* ▶️ 73 ▶️ 69 ▶️ 81 ▶️ 60 ▶️ 96*   ▶️ 81 Le sombre col tombe.
▶️ 39* ▶️ 49 ▶️ 69 ▶️ 56 ▶️ 69 ▶️ 96*   ▶️ 94 L'auto saute au trottoir chaud.
▶️ 82 ▶️ 84 ▶️ 85 ▶️ 98 ▶️ 94 ▶️ 96*   ▶️ 99 Le château d'en haut est beau.
▶️ 89 ▶️ 85 ▶️ 75 ▶️ 91 ▶️ 52 ▶️ 75* ▶️ 70* ▶️ 98 Le cœur seul pleure doucement.
▶️ 98*   ▶️ 99 ▶️ 99 ▶️ 95 ▶️ 93* ▶️ 97* ▶️ 99 Tu es sûr du futur ?
    ▶️ 97 ▶️ 93 ▶️ 92 ▶️ 85*   ▶️ 90 Trois très grands trains traversent trois trop grandes rues.
    ▶️ 94 ▶️ 85 ▶️ 97 ▶️ 82*   ▶️ 92 Je veux deux feux bleus, mais la reine préfère la laine beige.
    ▶️ 91 ▶️ 79 ▶️ 87 ▶️ 82*   ▶️ 94 Vincent prend un bain en chantant lentement.
    ▶️ 89 ▶️ 91 ▶️ 91 ▶️ 84*   ▶️ 92 La mule sûre court plus vite que le loup fou.
    ▶️ 91 ▶️ 93 ▶️ 93 ▶️ 92*   ▶️ 96 Luc a bu du jus sous le pont où coule la boue.
    ▶️ 88 ▶️ 71 ▶️ 94 ▶️ 86*   ▶️ 92 Le frère de Robert prépare un rare rôti rouge.
    ▶️ 81 ▶️ 84 ▶️ 88 ▶️ 67*   ▶️ 94 La mule court autour du mur où hurle le loup.

Pronunciation still feels a bit hit or miss. Sometimes I say a sentence and my tutor says "Oui," and then I say it again and he says "Non, non…" The /ʁ/ and /y/ sounds are hard.

I like seeing these compact links in an Org Mode table and being able to play them, thanks to my custom audio link type. It should be pretty easy to write a function that lets me use a keyboard shortcut to play the audio (maybe using the keys 1-9?) so that I can bounce between them for comparison.

If I screen-share from Google Chrome, I can share the tab with audio, so my tutor can listen to things at the same time. Could be fun to compare attempts so that I can try to hear the differences better. Hmm, actually, let's try adding keyboard shortcuts that let me use 1-8, n/p, and f/b to navigate and play audio. Mwahahaha! It works!

2026-03-14: Second set: Mon oncle peint un grand pont blanc, etc.

Update 2026-03-14: My tutor gave me a new set of tongue-twisters. When I'm working on my own, I find it helpful to loop over an audio reference with a bit of silence after it so that I can repeat what I've heard. I have several choices for reference audio:

  • I can generate an audio file using text-to-speech, like a local instance of Kokoro TTS, or a hosted service like Google Translate (via gtts-cli), ElevenLabs, or Microsoft Azure.
  • I can extract a recording of my tutor from one of my sessions.
  • I can extract a recording of myself from one of my tutoring sessions where my tutor said that the pronunciation is alright.

Here I stumble through the tongue-twisters. I've included reference audio from Kokoro, gtts, and ElevenLabs for comparison.

(my-subed-record-analyze-file-with-azure-and-references
 (subed-record-keep-last
  (subed-record-filter-skips
   (subed-parse-file
    "/home/sacha/proj/french/analysis/virelangues/2026-03-13-raphael-script.vtt")))
 "~/proj/french/analysis/virelangues-2026-03-13/2026-03-13-clip")
Gt Kk Az Me ID Comments All Acc Flu Comp Conf  
👂🏼 👂🏼 👂🏼 ▶️ 1 X: pont 93 99 90 100 86 Mon oncle peint un grand pont blanc. {pont}
👂🏼 👂🏼 👂🏼 ▶️ 2 C'est mieux 68 75 80 62 87 Un singe malin prend un bon raisin rond.
👂🏼 👂🏼 👂🏼 ▶️ 3 Ouais, c'est ça 83 94 78 91 89 Dans le vent du matin, mon chien sent un bon parfum.
👂🏼 👂🏼 👂🏼 ▶️ 4 ok 75 86 63 100 89 Le soin du roi consiste à joindre chaque coin du royaume.
👂🏼 👂🏼 👂🏼 ▶️ 5 Ouais, c'est ça, parfait 83 94 74 100 88 Dans un coin du bois, le roi voit trois points noirs.
👂🏼 👂🏼 👂🏼 ▶️ 6 Ouais, parfait 90 92 87 100 86 Le feu de ce vieux four chauffe peu.
👂🏼 👂🏼 👂🏼 ▶️ 7 Ouais 77 85 88 71 86 Deux peureux veulent un peu de feu.
👂🏼 👂🏼 👂🏼 ▶️ 8   77 78 75 83 85 Deux vieux bœufs veulent du beurre.
👂🏼 👂🏼 👂🏼 ▶️ 9 Ouais, parfait 92 94 89 100 89 Elle aimait marcher près de la rivière.
👂🏼 👂🏼 👂🏼 ▶️ 10 Ok, c'est bien 93 98 89 100 90 Je vais essayer de réparer la fenêtre.
👂🏼 👂🏼 👂🏼 ▶️ 11 Okay 83 87 76 100 89 Le bébé préfère le lait frais.
👂🏼 👂🏼 👂🏼 ▶️ 12   77 92 70 86 90 Charlotte cherche ses chaussures dans la chambre.
👂🏼 👂🏼 👂🏼 ▶️ 13 Okay 91 90 94 91 88 Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
👂🏼 👂🏼 👂🏼 ▶️ 14 Ouais 91 88 92 100 91 Le journaliste voyage en janvier au Japon.
👂🏼 👂🏼 👂🏼 ▶️ 15 C'est bien (X: dans un) 91 88 94 100 88 Georges joue du jazz dans un grand bar. {dans un}
👂🏼 👂🏼 👂🏼 ▶️ 16 C'est bien 88 87 94 88 85 Un jeune joueur joue dans le grand gymnase.
👂🏼 👂🏼 👂🏼 ▶️ 17   95 94 96 100 91 Le compagnon du montagnard soigne un agneau.
👂🏼 👂🏼 👂🏼 ▶️ 18   85 88 84 86 89 La cigogne soigne l’agneau dans la campagne.
👂🏼 👂🏼 👂🏼 ▶️ 19 grenouille 71 80 68 75 86 La grenouille fouille les feuilles dans la broussaille.

And comparing clips over time:

(learn-lang-subed-record-summarize-segments
 (split-string (org-file-contents "~/proj/french/analysis/virelangues-2026-03-13/phrases.txt") "\n")
 '(("/home/sacha/proj/french/analysis/virelangues/2026-03-13-raphael-script.vtt" . "Mar 13")
   ("/home/sacha/proj/french/analysis/virelangues-2026-03-13/2026-03-20-raphael-script.vtt" . "Mar 20")
   ("/home/sacha/proj/french/analysis/virelangues-2026-03-13/2026-03-24-raphael-script.vtt" . "Mar 24")
   ("/home/sacha/proj/french/analysis/virelangues-2026-03-13/2026-03-27-script.vtt" . "Mar 27"))
 "~/proj/french/analysis/virelangues-2026-03-13/all-"
 #'learn-lang-subed-record-get-last-attempt)
Mar 13 Mar 20 Mar 24 Mar 27 Text
▶️ 93* ▶️ 89 ▶️ 71* ▶️ 88 Mon oncle peint un grand pont blanc.
▶️ 68* ▶️ 82* ▶️ 90* ▶️ 91 Un singe malin prend un bon raisin rond.
▶️ 83* ▶️ 89* ▶️ 93* ▶️ 95 Dans le vent du matin, mon chien sent un bon parfum.
▶️ 75* ▶️ 84* ▶️ 86* ▶️ 90 Le soin du roi consiste à joindre chaque coin du royaume.
▶️ 83* ▶️ 88* ▶️ 96 ▶️ 97 Dans un coin du bois, le roi voit trois points noirs.
▶️ 90* ▶️ 90* ▶️ 90* ▶️ 99 Le feu de ce vieux four chauffe peu.
▶️ 77* ▶️ 77* ▶️ 84* ▶️ 89 Deux peureux veulent un peu de feu.
▶️ 77 ▶️ 80* ▶️ 71* ▶️ 52 Deux vieux bœufs veulent du beurre.
▶️ 92* ▶️ 88* ▶️ 100* ▶️ 96 Elle aimait marcher près de la rivière.
▶️ 93* ▶️ 87* ▶️ 98* ▶️ 94 Je vais essayer de réparer la fenêtre.
▶️ 83* ▶️ 85* ▶️ 93* ▶️ 97 Le bébé préfère le lait frais.
▶️ 77 ▶️ 78* ▶️ 88* ▶️ 87 Charlotte cherche ses chaussures dans la chambre.
▶️ 91* ▶️ 92* ▶️ 97* ▶️ 92 Un chasseur sachant chasser sans son chien est-il un bon chasseur ?
▶️ 91* ▶️ 84* ▶️ 88* ▶️ 91 Le journaliste voyage en janvier au Japon.
▶️ 91*   ▶️ 79* ▶️ 95 Georges joue du jazz dans un grand bar.
▶️ 88* ▶️ 99* ▶️ 90* ▶️ 96 Un jeune joueur joue dans le grand gymnase.
▶️ 95 ▶️ 95 ▶️ 94* ▶️ 93 Le compagnon du montagnard soigne un agneau.
▶️ 85 ▶️ 63* ▶️ 86* ▶️ 100 La cigogne soigne l'agneau dans la campagne.
▶️ 71* ▶️ 64* ▶️ 79* ▶️ 91 La grenouille fouille les feuilles dans la broussaille.
  ▶️ 66* ▶️ 79* ▶️ 73 La vieille abeille travaille dans la broussaille.
  ▶️ 96* ▶️ 90* ▶️ 95 Le juge Jean juge justement les jolis bijoux de Julie.
    ▶️ 92* ▶️ 93 Ma compagne m'accompagne à la campagne avec une autre compagne.
      ▶️ 82 Une tortue têtue marche dessus sous une pluie continue.
      ▶️ 76 Une mule têtue pousse une roue lourde sur une rue boueuse.
      ▶️ 73 Trois gros rats gris grimpent dans trois grands greniers rugueux.
      ▶️ 84 Un professeur rigoureux corrige un rapport sur une erreur rare.

The code

Code for summarizing the segments
(defun my-subed-record-analyze-file-with-azure-and-references (subtitles prefix &optional always-create)
  (cons
   '("Gt" "Kk" "Az" "Me" "ID" "Comments" "All" "Acc" "Flu" "Comp" "Conf")
   (seq-map-indexed
    (lambda (sub i)
      (let ((sound-file (expand-file-name (format "%s-%02d.opus"
                                                  prefix
                                                  (1+ i))))
            (tts-services
             '(("gtts" . learn-lang-tts-gtts-say)
               ("kokoro" . learn-lang-tts-kokoro-fastapi-say)
               ("azure" . learn-lang-tts-azure-say)))
            tts-files
            (note (subed-record-get-directive "#+NOTE" (elt sub 4))))
        (when (or always-create (not (file-exists-p sound-file)))
          (subed-record-extract-audio-for-current-subtitle-to-file sound-file sub))
        (setq
         tts-files
         (mapcar
          (lambda (row)
            (let ((reference (format "%s-%s-%02d.opus" prefix (car row) (1+ i) )))
              (when (or always-create (not (file-exists-p reference)))
                (funcall (cdr row)
                         (subed-record-simplify (elt sub 3))
                         'sync
                         reference))
              (org-link-make-string
               (concat "audio:" reference "?icon=t&note=" (url-hexify-string (car row)))
               "👂🏼")))
          tts-services))
        (append
         tts-files
         (list
          (org-link-make-string
           (concat "audio:" sound-file "?icon=t"
                   (format "&source-start=%s" (elt sub 1))
                   (if (and note (not (string= note "")))
                       (format "&title=%s"
                               (url-hexify-string note))
                     ""))
           "▶️")
          (format "%d" (1+ i))
          (or note ""))
         (learn-lang-azure-subed-record-parse (elt sub 4))
         (list
          (elt sub 3)))))
    subtitles)))

Jumping to the source again:

(defun my-subed-record-org-clip-view-source ()
  (interactive)
  (let* ((params
          (url-parse-query-string
           (cdr
            (url-path-and-query
             (url-generic-parse-url
              (org-element-property :raw-link (org-element-context))))))))
    (find-file (car (alist-get "source-file" params nil nil #'string=)))
    (subed-jump-to-subtitle-id-at-msecs
     (string-to-number (car (alist-get "source-start" params nil nil #'string=))))))

I've moved the rest of the code to sachac/learn-lang on Codeberg.

View Org source for this post

La semaine du 2 mars au 8 mars

| french

lundi 2 mars

J'ai préparé ma newsletter sur Emacs et j'ai écrit un article sur l'affichage d'indices pour des raccourcis clavier. J'ai aussi essayé l'expansion des snippets par commande vocale. Je pense que l'expansion des snippets est utile parce que quand j'insère un snippet à partir d'initiales, je dois penser à l'expression et puis penser aux lettres initiales, mais quand j'insère un snippet par commande vocale, je peux utiliser l'expression naturelle. Bien sûr, il y a un bref délai pour la transcription, mais c'est suffisamment court pour ne pas couper le fil de mes pensées.

Ma fille était trop fatiguée pour son cours de gymnastique, donc je l'ai emmenée chez la dentiste pour un examen à cause de sa douleur dentaire. La dentiste a dit que ses gencives sont un peu enflées. Elle nous a recommandé de ramollir sa brosse à dents sous l'eau chaude avant de se brosser les dents et peut-être d'utiliser un bain de bouche salin. Ma fille s'est plainte que ses dents semblent trop serrées. La dentiste a dit que c'est acceptable pour le moment, et si nous voulons, elle peut nous orienter vers un orthodontiste. Quand j'étais plus jeune, je ne supportais pas l'appareil dentaire, mais c'est possible que ma fille puisse le supporter. Je pense que c'est mieux que nous attendions que le pic de concentration virale dans les eaux usées soit passé.

Après la vaisselle et ma routine du soir, ma fille et moi avons cousu à la main notre projet de petit sac avec quelques poches.

mardi 3 mars

J'ai travaillé sur les virelangues pendant le rendez-vous avec mon tuteur. Les sons « r » et « u » ont continué à me poser des difficultés. Je vais travailler sur la différence entre « roue » et « rue », le mot « brume », et quelques autres. Il a dit que le « r » a besoin de moins d'air.

Les résultats aujourd'hui :

Je me demande quel serait une bonne méthode et une bonne interface pour m'entraîner seule à la prononciation entre les rendez-vous avec mon tuteur. Je pense que le processus comprend les étapes suivantes :

  1. Apprendre à écouter la différence entre l'exemple et un énoncé incorrect : il s'agit d'abord de distinguer qu'ils sont différents, puis de comprendre pourquoi.
    • Si j'extrais les énoncés de mes enregistrements et que je les annote avec les classifications de mon tuteur, je peux les utiliser pour l'apprentissage supervisé afin d'exercer mon oreille. Ces enregistrements seront trop ennuyeux pour d'autres, mais pour moi, il vaut peut-être mieux que je les écoute pour mieux apprendre.
  2. Identifier lequel des deux énoncés est le meilleur.
    • Je peux randomiser les courts enregistrements de l'étape précédente pour créer un jeu.
  3. Essayer de produire des sons variés. Il faut m'entraîner, il n'y a évidemment pas d'autre solution.
  4. Écouter la différence entre l'exemple et le son que j'ai produit. Déterminer si le son est assez bon. Réfléchir à la connexion entre les mouvements de la bouche et le son qu'ils produisent.
  5. Produire le son de manière isolée. Connecter la sensation interne de produire le son avec le son que je veux produire, parce que le son que j'enregistre diffère du son que j'écoute en parlant.
  6. Produire le son systématiquement.
  7. Produire le son même si je n'écoute pas de modèle et je ne viens pas de le répéter.
  8. Utiliser le son dans le contexte d'une expression avec des pauses.
  9. Dire l'expression plus fluidement.
  10. Dire l'expression sans exemple.

Si c'était un problème résolu facilement, tout le monde utiliserait et recommanderait la solution. Je pense qu'il n'y a pas de bonne solution sur le marché à l'exception de la méthode que j'ai utilisée pour la formation de mon petit projet d'intelligence humaine générale (qui a 10 ans maintenant, comme elle me le dit souvent) : une quantité massive de données. Mais bien sûr, il y a beaucoup de recherches dont je peux profiter.

Oooh, j'ai hâte d'essayer des spectrogrammes en plus des formes d'onde. Il y a quelques logiciels qui peuvent afficher les spectrogrammes même en temps réel. C'est possible que ça facilite l'analyse des voyelles.

Donc, je peux utiliser les horodatages par mot de WhisperX pour segmenter l'enregistrement. Mais je dois les écouter dans le contexte du rendez-vous pour les associer avec les commentaires de mon tuteur, sauf si la segmentation par locuteur est fiable pour identifier quels énoncés ont obtenu un « oui » ou « c'est mieux » de mon tuteur et quels énoncés lui font dire « non ». Pour le moment, je pense que c'est plus fiable si j'écoute la conversation et annote les segments moi-même, donc une interface qui affiche les formes d'onde segmentées et me permet de faire des sélections par raccourcis clavier serait utile. Si les scores sont disponibles, les afficher sous forme de graphique à barres est peut-être plus précis et plus facile à comparer que les afficher à l'aide d'un dégradé de couleurs. Je peux aller voir du côté de Label Studio ou Praat pour des idées à implémenter sur Emacs. Ou bien, si j'utilise Audino 2.0 ou d'autres projets similaires sur le web, je peux les annoter pendant mes moments perdus.

Pendant la pratique, je pense que mon interface doit lancer l'enregistrement de mon tuteur et peut-être afficher la forme d'onde ou le spectrogramme. Elle doit enregistrer ma voix, puisqu'elle doit lancer la lecture de l'exemple du tuteur et l'enregistrement de ma voix pour comparaison avec le score de confiance de WhisperX. Des raccourcis clavier lancent l'un ou l'autre.

Notre réseau

Mon tuteur a une question sur les réseaux informatiques, donc je vais profiter de cette occasion pour expliquer notre réseau en français afin d'apprendre plusieurs mots techniques en cours de route. Mon mari est principalement responsable de l'entretien de notre réseau, mais je devrais également m'y former.

Mon mari a recommandé des ressources pour les gens intéressés :

  • Jim's Garage : recommandé vivement, mais le Homelab 2.0 dont il a discuté dans les vidéos récentes commence à coûter cher.
  • Serve the Home
  • Reddit, bien sûr

Notre réseau :

  • Notre modem fibre optique du FAI se connecte à un mini-ordinateur Lenovo M920q qui fait fonctionner Proxmox pour la gestion de pare-feu et quelques machines virtuelles. Une des machines virtuelles est OPNSense, qui gère les adresses réseau, le pare-feu, le lissage du trafic réseau (y compris la règle consistant à couper l'accès à internet de notre enfant tard le soir) et divers réseaux virtuels (VLAN) pour isoler les différents appareils via l'adaptateur réseau Gigabit Intel 893647. L'Internet des objets manque souvent de mises à jour, donc mon mari veut les isoler de nos autres ordinateurs. OPNSense lui-même reçoit des mises à jour. En fait, mon mari l'a mis à jour récemment, et il est passé de 16 à 32 gigaoctets de RAM. Mon mari a dit qu'il apprécie que le Lenovo M920q soit assez silencieux.
  • Le M920Q se connecte à un commutateur réseau ASUS GS108Tv2, qui se connecte au Synology DS718+ pour le stockage réseau et à l'Odroid-XU4 qui fait aussi fonctionner PiHole pour réduire les publicités. Proxmox sur le M920q a aussi une machine virtuelle qui est responsable de sauvegarder les fichiers sur le Synology DS718+.
  • Le commutateur réseau ASUS GS108Tv2 se connecte au routeur wifi ASUS RT-AC66U qui utilise FreshTomato pour avoir plus de contrôle qu'avec le modem fibre optique. Il est capable de wifi 5 GHz et il peut traiter les réseaux wifi virtuels (deux ou plus de SSIDs dans la même bande 2,4 GHz ou 5 GHz) pour isoler les appareils comme le thermostat. De cette façon, les appareils fiables comme nos ordinateurs ne sont pas visibles par les appareils non sécurisés.
  • Le routeur wifi se connecte à un commutateur réseau non géré qui se connecte à un Odroid-C4 qui utilise OpenELEC et à notre vieille Sony PS3.

Nous utilisions le routeur wifi ASUS RT-AC66U avec FreshTomato pour notre réseau, mais mon mari a mis à niveau vers le Lenovo M920q pour faciliter la gestion des réseaux virtuels et pour optimiser le débit. Il a dit qu'il avait choisi les composants pour minimiser l'espace, la consommation d'énergie et le bruit. Rien n'est neuf et tout peut être acheté sur Ebay ou le marché de l'occasion. Pour le moment, la RAM et le stockage coûtent très cher, et nous n'avons pas besoin de haute disponibilité ou réplication.

network.png

Après l'école, ma fille a eu de l'énergie, donc je l'ai emmenée à un cours de rattrapage de gymnastique. C'était un cours collectif de tissu aérien. Pendant que ma fille participait en classe, j'ai étudié mes cartes Anki. Elle a globalement aimé le cours à l'exception de ses chaussettes perdues. Malheureusement, quelqu'un a pris les chaussettes de ma fille au lieu des siennes. Je me suis retenue de dire qu'elle aurait dû me donner ses affaires à garder.

mercredi 4 mars

J'ai écrit un article sur l'expansion de snippets par la reconnaissance vocale sur Emacs et sur d'autres applications.

J'ai essayé le bilan de prononciation d'Azure et la transcription des phonèmes par la bibliothèque Allosaurus, mais je pense que ceux-ci ne sont ni fiables ni adaptés à mes objectifs. Je ne sais pas si les scores d'Azure sont utiles. Allosaurus ne me donne pas l'API que je veux, même si j'analyse l'enregistrement de mon tuteur. (Je dois le vérifier avec le résultat de la synthèse vocale…)

Le cours phonologique de FSI contraste deux exemples courts similaires pour développer la compétence d'identification des différences. Pour le moment, mieux vaut améliorer mon processus pour extraire et écouter les segments vocaux de mon rendez-vous que de s'entraîner d'une façon peu fiable et probablement incorrecte mais avec assurance.

Ma fille et moi avons fait des courses. Après une pause, ma fille et moi sommes allées au parc pour jouer à Pokémon Go avec beaucoup d'autres dresseurs. Nous avons gagné quelques raids, mais ma fille n'a pas attrapé les Pokémons qu'elle voulait. Elle était un peu déçue, mais elle a dit que c'était une bonne promenade de toute façon.

Ma fille était de mauvaise humeur à l'heure du coucher à cause de mon conseil pendant le brossage. Je suis restée calme et je lui ai donné de l'espace.

jeudi 5 mars

Ma fille s'est réveillée toute seule ce matin et elle a pris son petit-déjeuner, mais elle n'a pas voulu assister à ses cours en ligne. La harceler n'est pas utile, donc je l'ai laissée gérer ses propres émotions. J'ai travaillé sur le piano. J'ai aussi amélioré l'automatisation pour rassembler les jalons de distribution pour la Bike Brigade en utilisant Spookfox. J'ai découvert que la clé est d'utiliser le code

document.querySelector('form[phx-change="update_options"]')
  .dispatchEvent(new Event('submit', {bubbles: true, cancelable:true}))

pour mettre le tableau à jour après avoir changé les dates. Spookfox ne me permet pas d'attendre le résultat s'il prend du temps, donc je dois attendre dans Emacs Lisp comme ça :

(let (result)
  (dolist (block-name '("milestone-this-month-set"
                        "milestone-this-month-get"
                        "milestone-before-month-set"
                        "milestone-before-month-get"
                        "milestone-after-month-set"
                        "milestone-after-month-get"
                        "milestone-summary"))
    (setq result
           (org-babel-execute-src-block
            nil
            (org-babel-lob--src-info block-name)
            nil 'babel-call))
    (when (string-match "-set" block-name)
      (message "Waiting after %s..." block-name)
      (sit-for 3)))
  (kill-new result)
  (message "Copied."))

De cette façon, j'ai simplifié le processus pour réduire le nombre de clics. Le code complet est ici.

vendredi 6 mars

J'ai adoré travailler sur ma prononciation via mes notes sur notre réseau sur lequel mon tuteur m'avait interrogée mardi et mon mari m'avait aidée. J'ai besoin de travailler encore sur l'alphabet, qui est nécessaire pour lire les noms de modèles à voix haute. Mon tuteur a aussi des questions sur les LLM. J'ai hâte d'écrire plus de notes.

Nous avons réarrangé des meubles parce que le nouveau lit arrive demain pour notre fille. Nous avons déplacé les étagères dans la chambre de ma fille dans un coin qui est mon nouvel espace bureau.

Ma fille était trop frustrée par l'école aujourd'hui. Elle a séché ses cours, et elle a voulu rentrer plus tôt de sa sortie avec son amie. Je pense que cette journée était un peu difficile pour elle. Je me suis rappelé de penser sur le long terme, sans harcèlement.

samedi 7 mars

Ma fille et moi avons joué à Donjons et Dragons avec mes sœurs et mes nièces. Nous avons bien aimé la partie. Dans l'histoire, il y avait des kobolds qui habitent dans une des Cavernes du Chaos et qui regrettent d'avoir attrapé un ours. L'ours avait très faim et les kobolds aussi, parce que les kobolds lui donnent leur nourriture pour éviter d'avoir mal. La clerc (ma fille) et la guerrière (une de mes nièces) ont réussi à attirer l'ours dehors avec des bleuets. Ma sœur la magicienne a mené la charge contre des maraudeurs qui habitaient dans une autre caverne, et nous les avons vaincus. Dans une chambre, nous avons vu deux coffres, mais nous avons trouvé qu'un coffre était en fait un imitateur. Après un autre combat, nous avons trouvé 150 pièces d'or, des bottes et une potion mystérieuse.

Après le déjeuner, ma fille et moi avons fait une promenade au parc pendant que nous jouions à Pokémon Go. Il faisait beau avec beaucoup de brume qui semblait un peu magique.

Puis, mon mari et moi avons démonté l'ancien lit de ma fille et quelques autres meubles dans sa chambre pour créer de l'espace pour son nouveau lit.

dimanche 8 mars

Ma fille a réussi à éviter de tomber de son nouveau lit mezzanine. Succès ! Mon mari a fini de poncer et de vernir le garde-corps qu'il fabriquait en bois, donc il l'a installé pour nous permettre d'utiliser le matelas qui est trop épais pour le garde-corps original.

J'ai commencé à externaliser mon code dans un nouveau package d'apprentissage des langues. Je ne sais pas s'il est utile aux autres, mais si je veux aider les autres à essayer, il a besoin d'un peu de travail.

Il faisait très beau. Mon mari, ma fille et moi sommes allés à IKEA pour acheter des coussins, des lumières et un tapis de gym pour le petit coin jeu sous le nouveau lit de ma fille. Pendant ce temps-là, ma fille a vu un couteau qu'elle a aimé, donc nous l'avons acheté aussi. À la maison, elle a installé le tapis et les coussins elle-même. Elle a décidé de rapporter les lumières pour se faire rembourser la semaine prochaine.

Pour le dîner, nous avons préparé des nuggets de poulet, des frites et du brocoli.

Sur l'intelligence artificielle

Dans le rendez-vous précédent, mon tuteur m'a posé des questions sur l'intelligence artificielle. Je veux réfléchir sur l'IA pour travailler ma prononciation en utilisant un sujet qui nous intéresse également, et pour trouver des points d'amélioration.

D'abord, du contexte pour expliquer ma perspective :

  • Je laisse de côté les questions sur l'impact environnemental ou l'éthique des données entrantes.
  • Jusqu'à présent, j'ai essayé l'IA pour mes centres d'intérêt comme la parentalité, l'apprentissage du français et la programmation en Emacs Lisp, en Python et en Javascript. Je l'ai aussi utilisée pour faire des recherches.
  • Je travaille seulement un peu comme consultante, mais en fait, c'est juste pour le plaisir. Je ne veux pas augmenter ma charge de travail parce que je me concentre sur ma fille et mes intérêts personnels. Rien ne me presse d'utiliser l'IA (comme un chef, des clients ou des concurrents). L'IA ne me menace pas. Je peux l'utiliser ou ne pas l'utiliser, à mon gré. Je peux me focaliser sur mon bonheur.
  • Je peux consacrer une petite partie de mon budget à des essais, mais je ne veux pas travailler davantage pour rentabiliser une dépense plus importante. Pour le moment, les limites d'utilisation gratuite de Gemini, de Claude et d'Azure suffisent pour mes idées et mon temps limité. Je n'ai pas le temps de concentration nécessaire pour justifier l'investissement dans mon propre matériel, et sinon, les progrès sont trop rapides pour m'engager dans une configuration spécifique.
  • J'ai une conscience aiguë des limites cognitives ou physiques à cause des difficultés de santé de ma mère et de ma sœur, et de mes expériences avec mes limitations à cause du fait que je suis la personne principalement en charge de ma fille.
  • Je lis très vite, mais je n'ai pas assez de patience pour les longs contenus vidéo ou audio. Je n'aime pas les textes qui contiennent beaucoup de remplissage.
  • J'aime la programmation, donc je comprends un peu comment l'IA fonctionne et je ne peux pas lui attribuer une vraie intelligence. Je n'aime pas non plus les résultats imprévisibles.
  • De mon côté, c'est facile de lancer beaucoup d'idées. C'est difficile de les mener à terme. Je peine à finaliser mes tâches parce que de nouvelles idées arrivent sans cesse. Mais presque aucune de mes tâches n'est vraiment nécessaire, donc ce n'est pas grave.
  • J'aime bien l'amélioration incrémentale. Je préfère les petites étapes, les petites fonctions, les petits logiciels.
  • Beaucoup de gens ont une réaction forte contre l'IA pour plusieurs raisons qui incluent le battage médiatique excessif dont elle fait l'objet, son utilisation à mauvais escient, et l'inondation de banalité qu'elle produit.
La programmation

Pour la programmation, je trouve qu'elle fonctionne mieux pour les logiciels courts que pour les logiciels longs. Je réécris souvent la majorité du logiciel à l'exception d'un ou deux morceaux parce que ce code ne me convient pas. De temps en temps, j'utilise l'IA pour parfaire ou vérifier une idée rapidement avant de travailler sur l'idée moi-même. Je ne veux pas l'utiliser pour les correctifs que je veux soumettre à d'autres projets parce que le code ne me semble pas correct et je ne veux pas gaspiller le temps d'autres bénévoles.

Quelques exemples concrets :

  • C'était utile pour implémenter une fonction qui compare deux listes et renvoie les éléments ajoutés, enlevés, ou modifiés via un algorithme classique que je comprends un peu mais pas suffisamment pour l'implémenter moi-même.
  • C'était utile pour tester l'idée d'un serveur de Kokoro TTS qui est compatible avec le serveur speechd parce que je ne sais pas encore comment faire un serveur multithread en Python. J'aime pouvoir lui donner trois dépôts git et des instructions pour générer un logiciel à partir d'un dépôt pour un autre via le troisième dépôt. Mais je ne veux pas le publier avant de réécrire et tout comprendre.
  • C'était utile pour générer des interfaces web pour mes idées personnelles.
  • Ce n'était pas très utile pour bricoler ma configuration (à l'exception d'identifier parfois des commandes ou des variables que je ne connais pas), parce que j'aime bien le bricolage. Spécifier mes objectifs demande souvent autant de travail que de les implémenter moi-même.

Mon mari a son propre abonnement à Claude IA. Il a dit qu'il l'apprécie parce que l'IA peut gérer plusieurs petites tâches qui autrement nécessitent beaucoup de recherches. De mon côté, j'utilise souvent Gemini IA parce que sa limite d'utilisation gratuite est généreuse. J'ai aussi essayé Claude Code, mais mes connaissances sont limitées. Il semble utile, mais je préfère l'isoler dans une machine virtuelle, donc c'est peu pratique pour moi en ce moment.

L'IA est très utile pour utiliser des commandes qui ont beaucoup d'options comme ffmpeg ou gnuplot.

Je ne trouve pas l'IA assez fiable pour la laisser agir complètement indépendamment. Peut-être un jour, mais pour moi, pas encore.

L'apprentissage du français

J'aime utiliser l'IA pour me donner des retours sur mes textes. Si j'utilise seulement le dictionnaire, je ferai beaucoup d'anglicismes à cause de la traduction littérale. Les sujets qui m'intéressent sont un peu rares, donc ce sera peut-être difficile de trouver un tuteur qui se concentre exactement sur ceux-là. C'est un peu inefficace de corriger mon écriture mot à mot avec un professionnel. Mon journal et mes pensées ne sont pas si importants. Avec l'IA, je n'ai pas à perdre de temps avec mon tuteur pour corriger beaucoup d'erreurs comme l'accord du nom et du verbe ou les mots maladroits, et je découvre de nouveaux mots et expressions. Les suggestions de l'IA sont de temps en temps bizarres, donc c'est toujours une bonne idée de vérifier avec de vraies personnes. Sans l'IA, je pourrais peut-être apprendre plus lentement avec l'aide d'Internet, qui a beaucoup de ressources comme Vitrine linguistique.

J'ai essayé l'IA pour faire des commentaires sur ma prononciation, mais je pense que ce n'est pas encore fiable et je n'ai pas l'expérience pour bien juger. Je peux peut-être vérifier mes résultats avec un tuteur, mais c'est peut-être difficile à cause des objectifs contradictoires, comme les personnes à qui l'on demande de former leurs remplaçants. En fait, je ne veux pas remplacer la connexion humaine. Je veux profiter davantage, apprendre davantage avec l'aide de vraies personnes, complétée par l'aide de l'IA. Il y a des chercheurs qui étudient les applications de l'IA à l'apprentissage des langues. Je peux attendre leurs découvertes. En attendant, je pense qu'il vaut mieux utiliser l'IA pour comprendre d'autres manières d'analyser la prononciation moi-même, et pour construire des outils personnalisés peut-être comme les résumés et les extraits de nos rendez-vous, les visualisations de mes tentatives, ou une interface pour enregistrer et écouter en temps réel.

De temps en temps, j'essaye de générer des histoires ou des articles compréhensibles de mon niveau (ou presque). Pour le moment, je préfère d'autres ressources pour la lecture, comme les sous-titres d'émissions. Néanmoins, les traductions automatiques sur Reddit m'intéressent, donc j'ai réussi à remplacer mon fil d'actualité par un flux en français.

Je ne suis pas encore prête à converser avec des IA par la voix. J'ai essayé la conversation libre et le dialogue presque scénarisé. J'adore les sous-titres simultanés, mais je n'ai pas toujours trouvé une méthode ou un système qui me convienne. Dans la conversation libre, je sais que l'interlocuteur est une IA, donc je n'ai pas une vraie curiosité pour ses «intérêts ou pensées». La conversation semblait très artificielle. En plus, je pense que je préférerais en construire un moi-même pour plus de contrôle. De toute façon, ma prononciation, ma grammaire et mon vocabulaire ont besoin de travail. Dans le dialogue scénarisé, je n'ai pas encore un vocabulaire assez riche pour discuter des sujets dans les exercices généraux. Si je répète simplement, je n'ai pas besoin d'IA pour ça.

La parentalité

J'ai parfois utilisé Claude IA pour générer des histoires interactives sur les centres d'intérêt de ma fille. Les histoires incluent les mots que ma fille doit apprendre pour sa classe. Elles permettent de taper sur un mot pour l'écouter par la synthèse vocale et pour voir la traduction. Elle aime bien ce format. L'enseignant de ma fille n'a pas le temps de personnaliser l'apprentissage du vocabulaire à ce point, et elle est trop imprévisible pour planifier ses propres rendez-vous avec un tuteur.

Elle aime générer d'autres histoires interactives avec l'IA elle-même, comme des petits jeux sur KPop Demon Hunters ou Pokémon. Je pense que c'est une bonne façon de s'entraîner à réfléchir à ce qu'elle veut, comment l'expliquer et comment le peaufiner.

Elle a 10 ans. Personne ne sait à quoi ressemblera vraiment le monde quand elle sera grande. Je pense que c'est mieux que mon mari et moi montrions comment approcher, comment apprendre, comment décider ce que nous pensons, sans peur ni battage publicitaire.

Sans l'IA, nous pourrions improviser nos propres histoires. Mais je pense que la capacité de lui donner plus de contrôle dans une boucle de rétroaction1 rapide est une bonne chose.

Je n'aime pas l'utiliser pour essayer de résoudre mes dilemmes de parentalité parce que l'IA confirme toujours quoi qu'on lui donne. De temps en temps, je l'utilise pour générer des questions pour réfléchir, ce qui est un peu plus utile.

Divers

J'aime bien la reconnaissance vocale parce qu'elle me permet de saisir plus d'idées plus vite (avant de les oublier) et d'analyser les transcriptions sans avoir à réécouter tous les enregistrements. Beaucoup de raisons peuvent empêcher une personne de taper. J'aime bien la programmation et l'écriture, et je veux continuer longtemps. J'ai hâte d'explorer des interfaces vocales.

Je pense que la manière probabiliste que l'IA utilise est prometteuse pour chercher des choses que je ne sais pas exactement, ce qui sera très utile quand on a un brouillard cérébral. Je n'aime pas les résumés qui sont souvent mauvais et qui enlèvent l'expérience de rencontrer d'autres personnes qui pensent elles aussi des choses similaires. J'aime suivre les liens où je peux en apprendre davantage. J'aime aussi poser quelques questions à l'IA avant ou au lieu de demander à une vraie personne.

Les étapes prochaines pour moi

Je vais continuer à essayer l'IA dans mes centres d'intérêt. Je veux extraire mes fonctions personnelles dans des bibliothèques de reconnaissance vocale et d'apprentissage des langues pour aider les autres, mais j'avance lentement parce que mon attention est facile à détourner. Petit à petit.

Je veux essayer les bibliothèques d'IA sous Emacs comme agent-shell. Si je peux approuver manuellement chaque commande, je pense que ce n'est pas grave.

Footnotes

1

Feedback loop? My tutor was not sure about the wording.

View Org source for this post

Emacs Lisp and NodeJS: Getting the bolded words from a section of a Google Document

Posted: - Modified: | french, js, emacs
  • : Cleaned up links from Google
  • : Simplified getting a section or finding the bolded text by using the Org Mode format instead.

During the sessions with my French tutor, I share a Google document so that we can mark the words where I need to practice my pronunciation some more or tweak the wording. Using Ctrl+B to make the word as bold is an easy way to make it jump out.

I used to copy these changes into my Org Mode notes manually, but today I thought I'd try automating some of it.

First, I need a script to download the HTML for a specified Google document. This is probably easier to do with the NodeJS library rather than with oauth2.el and url-retrieve-synchronously because of various authentication things.

require('dotenv').config();
const { google } = require('googleapis');

async function download(fileId) {
  const auth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/drive.readonly'],
  });
  const drive = google.drive({ version: 'v3', auth });
  const htmlRes = await drive.files.export({
    fileId: fileId,
    mimeType: 'text/html'
  });
  return htmlRes.data;
}

async function main() {
  console.log(await download(process.argv.length > 2 ? process.argv[2] : process.env['DOC_ID']));
}

main();

Then I can wrap a little bit of Emacs Lisp around it.

(defvar my-google-doc-download-command
  (list "nodejs" (expand-file-name "~/bin/download-google-doc-html.cjs")))

(defun my-google-doc-html (doc-id)
  (when (string-match "https://docs\\.google\\.com/document/d/\\(.+?\\)/" doc-id)
    (setq doc-id (match-string 1 doc-id)))
  (with-temp-buffer
    (apply #'call-process (car my-google-doc-download-command)
           nil t nil (append (cdr my-google-doc-download-command) (list doc-id)))
    (buffer-string)))

(defun my-google-doc-clean-html (html)
  "Remove links on spaces, replace Google links."
  (let ((dom (with-temp-buffer
               (insert html)
               (libxml-parse-html-region))))
    (dom-search
     dom
     (lambda (o)
       (when (eq (dom-tag o) 'a)
         (when (and (dom-attr o 'href)
                    (string-match "https://\\(www\\.\\)?google\\.com/url\\?q=" (dom-attr o 'href)))
           (let* ((parsed (url-path-and-query
                           (url-generic-parse-url (dom-attr o 'href))))
                  (params (url-parse-query-string (cdr parsed))))
             (dom-set-attribute o 'href (car (assoc-default "q" params #'string=)))))
         (let ((text (string= (string-trim (dom-text o)) "")))
           (when (string= text "")
             (setf (car o) 'span))))
       (when (and
              (string-match "font-weight:700" (or (dom-attr o 'style) ""))
              (not (string-match "font-style:normal" (or (dom-attr o 'style) ""))))
         (setf (car o) 'strong))
       (when (dom-attr o 'style)
         (dom-remove-attribute o 'style))))
    ;; bold text is actually represented as font-weight:700 instead
    (with-temp-buffer
      (svg-print dom)
      (buffer-string))))

(defun my-google-doc-org (doc-id)
  "Return DOC-ID in Org Mode format."
  (pandoc-convert-stdio (my-google-doc-clean-html (my-google-doc-html doc-id)) "html" "org"))

I have lots of sections in that document, including past journal entries, so I want to get a specific section by name.

(defun my-org-get-subtree-by-name (org-text heading-name)
  "Return ORG-TEXT subtree for HEADING-NAME."
  (with-temp-buffer
    (insert org-text)
    (org-mode)
    (goto-char (point-min))
    (let ((org-trust-scanner-tags t))
      (car (delq nil
                 (org-map-entries
                  (lambda ()
                    (when (string= (org-entry-get (point) "ITEM") heading-name)
                      (buffer-substring (point) (org-end-of-subtree))))))))))

Now I can get the bolded words from a section of my notes, with just a sentence for context. I use pandoc to convert it to Org Mode syntax.

(defvar my-lang-words-for-review-context-function 'sentence-at-point)
(defvar my-lang-tutor-notes-url nil)
(defun my-lang-tutor-notes (section-name)
  (my-org-get-subtree-by-name
   (my-google-doc-org my-lang-tutor-notes-url)
   section-name))

(defun my-lang-words-for-review (section)
  "List the bolded words for review in SECTION."
  (let* ((section (my-lang-tutor-notes section))
         results)
    (with-temp-buffer
      (insert section)
      (org-mode)
      (goto-char (point-min))
      (org-map-entries
       (lambda ()
         (org-end-of-meta-data t)
         (while (re-search-forward "\\*[^* ].*?\\*" nil t)
           (cl-pushnew
            (replace-regexp-in-string
             "[ \n ]+" " "
             (funcall my-lang-words-for-review-context-function))
            results
            :test 'string=)))))
    (nreverse results)))

For example, when I run it on my notes on artificial intelligence, this is the list of bolded words and the sentences that contain them.

(my-lang-words-for-review "Sur l'intelligence artificielle")
  • Je l'ai aussi utilisée pour faire des recherches.
  • Je peux consacrer une petite partie de mon budget à des essais, mais je ne veux pas travailler davantage pour rentabiliser une dépense plus importante.
  • Je n'ai pas le temps de concentration nécessaire pour justifier l'investissement dans mon propre matériel, et sinon, les progrès sont trop rapides pour m'engager dans une configuration spécifique.
  • J'ai une conscience aiguë des limites cognitives ou physiques à cause des difficultés de santé de ma mère et de ma sœur, et de mes expériences avec mes limitations à cause du fait que je suis la personne principalement en charge de ma fille.
  • Je lis très vite, mais je n'ai pas assez de patience pour les longs contenus vidéo ou audio.
  • Je n'aime pas les textes qui contiennent beaucoup de remplissage.
  • Beaucoup de gens ont une réaction forte contre l'IA pour plusieurs raisons qui incluent le battage médiatique excessif dont elle fait l'objet, son utilisation à mauvais escient, et l'inondation de banalité qu'elle produit.
  • Je réécris souvent la majorité du logiciel à l'exception d'un ou deux morceaux parce que ce code ne me convient pas.
  • Je ne veux pas l'utiliser pour les correctifs que je veux soumettre à d'autres projets parce que le code ne me semble pas correct et je ne veux pas gaspiller le temps d'autres bénévoles.
  • J'aime pouvoir lui donner trois dépôts git et des instructions pour générer un logiciel à partir d'un dépôt pour un autre via le troisième dépôt.
  • Mais je ne veux pas le publier avant de réécrire et tout comprendre.
  • Sans l'IA, je pourrais peut-être apprendre plus lentement avec l'aide d'Internet, qui a beaucoup de ressources commehttps://vitrinelinguistique.oqlf.gouv.qc.ca/Vitrine linguistique.
  • Je veux profiter davantage, apprendre davantage avec l'aide de vraies personnes, complétée par l'aide de l'IA.
  • J'adore les sous-titres simultanés, mais je n'ai pas toujours trouvé une méthode ou un système qui me convienne.

I can then go into the WhisperX transcription JSON file and replay those parts for closer review.

I can also tweak the context function to give me less information. For example, to limit it to the containing phrase, I can do this:

(defun my-split-string-keep-delimiters (string delimiter)
  (when string
    (let (results pos)
      (with-temp-buffer
        (insert string)
        (goto-char (point-min))
        (setq pos (point-min))
        (while (re-search-forward delimiter nil t)
          (push (buffer-substring pos (match-beginning 0)) results)
          (setq pos (match-beginning 0)))
        (push (buffer-substring pos (point-max)) results)
        (nreverse results)))))

(ert-deftest my-split-string-keep-delimiters ()
 (should
  (equal (my-split-string-keep-delimiters
          "Beaucoup de gens ont une réaction forte contre l'IA pour plusieurs raisons qui *incluent* le battage médiatique excessif dont elle fait l'objet, son utilisation à mauvais escient, et *l'inondation de banalité* qu'elle produit."
          ", \\| que \\| qui \\| qu'ils? \\| qu'elles? \\| qu'on "
          )
 )))

(defun my-lang-words-for-review-phrase-context (&optional s)
  (setq s (replace-regexp-in-string " " " " (or s (sentence-at-point))))
  (string-join
   (seq-filter (lambda (s) (string-match "\\*" s))
               (my-split-string-keep-delimiters s ", \\| parce que \\| que \\| qui \\| qu'ils? \\| qu'elles? \\| qu'on \\| pour "))
   " ... "))

(ert-deftest my-lang-words-for-review-phrase-context ()
  (should
   (equal (my-lang-words-for-review-phrase-context
           "Je peux consacrer une petite partie de mon *budget* à des essais, mais je ne veux pas travailler davantage pour rentabiliser une dépense plus importante.")
          "Je peux consacrer une petite partie de mon *budget* à des essais")))
(let ((my-lang-words-for-review-context-function 'my-lang-words-for-review-phrase-context))
  (my-lang-words-for-review "Sur l'intelligence artificielle"))
  • pour faire des recherches.
  • Je peux consacrer une petite partie de mon budget à des essais
  • , et sinon
  • J'ai une conscience aiguë des limites cognitives ou physiques à cause des difficultés de santé de ma mère et de ma sœur
  • pour les longs contenus vidéo ou audio.
  • Je n'aime pas les textes qui contiennent beaucoup de remplissage.
  • qui incluent le battage médiatique excessif dont elle fait l'objet … , et l'inondation de banalité
  • Je réécris souvent la majorité du logiciel à l'exception d'un ou deux morceaux
  • pour les correctifs … parce que le code ne me semble pas correct et je ne veux pas gaspiller le temps d'autres bénévoles.
  • pour un autre via le troisième dépôt.
  • Mais je ne veux pas le publier avant de réécrire et tout comprendre.
  • , je pourrais peut-être apprendre plus lentement avec l'aide d'Internet
  • , apprendre davantage avec l'aide de vraies personnes, complétée par l'aide de l'IA.
  • qui me convienne.

Now that I have a function for retrieving the HTML or Org Mode for a section, I can use that to wdiff against my current text to more easily spot wording changes.

(defun my-lang-tutor-notes-wdiff-org ()
  (interactive)
  (let ((section (org-entry-get (point) "ITEM")))
    (my-wdiff-strings
     (replace-regexp-in-string
      " " " "
      (my-org-subtree-text-without-blocks))
     (replace-regexp-in-string
      " " " "
      (my-lang-tutor-notes section)))))

Related:

Screenshot:

2026-03-12_11-28-24.png
Figure 1: wdiff
This is part of my Emacs configuration.
View Org source for this post

La semaine du 23 février au premier mar

| french

lundi 23 février

J'ai demandé si ses amis pourraient venir à sa fête demain. Nous avons appris qu'ils étaient malades depuis quelques semaines et ils ne pouvaient pas venir.

J'ai emmené ma fille à son cours de gymnastique à vélo parce que les rues étaient praticables. Elle s'est entraînée à faire la roue. Après ça, nous avons livré des pochettes surprises et des petits gâteaux pour ses amis qui sont malheureusement malades.

Ma fille a voulu faire des biscuits en meringues. Elle a séparé les œufs et les a battus elle-même jusqu'à ce qu'elle soit fatiguée. La première fournée n'a pas marché, mais la deuxième était acceptable. Nous les avons laissés dans le mini-four toute la nuit.

Nous avons découvert que l'axolotl en peluche qui passe au micro-ondes est une façon parfaite de chauffer nos orteils sous les couvertures. Ma fille ne s'habitue pas à l'odeur (c'est probablement la graine de lin avec la lavande), mais si c'est sous les couvertures, ça ne la dérange pas.

mardi 24 février

Les biscuits meringues sont encore trop collants ce matin. Il se trouve que j'ai oublié de les faire cuire au four pendant une heure hier soir. J'ai jeté la moitié de la fournée avant de rechercher une façon de réparer le reste. Heureusement, après les avoir cuits au four pendant une heure à basse température, les biscuits étaient acceptables.

J'ai travaillé sur la prononciation avec mon tuteur. J'ai réessayé les virelangues du rendez-vous précédent, ainsi que de nouveaux :

  • 00:00 Maman peint un grand lapin blanc.
  • 00:04 Un enfant intelligent mange lentement.
  • 00:08 Le roi croit voir trois noix.
  • 00:12 Le témoin voit le chemin loin.
  • 00:16 Moins de foin au loin ce matin.
  • 00:21 La laine beige sèche près du collège.
  • 00:25 La croquette sèche dans l'assiette.
  • 00:28 Elle mène son frère à l'hôtel.
  • 00:31 Le verre vert est très clair.
  • 00:35 Elle aimait manger et rêver.
  • 00:38 Le jeu bleu me plaît peu.
  • 00:41 Ce neveu veut un jeu.
  • 00:44 Le feu bleu est dangereux.
  • 00:47 Le beurre fond dans le cœur chaud.
  • 00:50 Les fleurs de ma sœur sentent bon.
  • 00:54 Le hibou sait où il va.
  • 00:56 L'homme fort mord la pomme.
  • 01:00 Le sombre col tombe.
  • 01:02 L'auto saute au trottoir chaud.
  • 01:07 Le château d'en haut est beau.
  • 01:09 Le cœur seul pleure doucement.
  • 01:14 Tu es sûr du futur.
  • 01:17 Trois très grands trains traversent trois trop grandes rues.
    {tʁwˈa tʁɛ ɡʁˈɑ̃ tʁˈɛ̃ tʁavˈɛʁs tʁwˈa tʁo ɡʁˈɑ̃d ʁˈy.}
  • 01:29 Je veux deux feux bleus, mais la reine préfère la laine beige.
    {ʒə vˈø dˈø fˈø blˈø, mɛ la ʁˈɛn pʁefˈɛʁ la lˈɛn bˈɛʒ.}
  • 01:37 Vincent prend un bain en chantant lentement.
    {vɛ̃sˈɑ̃ pʁˈɑ̃t œ̃ bˈɛ̃ ɑ̃ ʃɑ̃tˈɑ̃ lɑ̃tmˈɑ̃.}
  • 01:44 La mule sûre court plus vite que le loup fou.
    {la mˈyl sˈyːʁ kˈuʁ ply vˈit kə lə lˈu fˈu.}
  • 01:50 Luc a bu du jus sous le pont où coule la boue.
    {lˈyk a bˈy dy ʒˈy su lə pˈɔ̃t u kˈul la bˈu.}

Je n'ai pas enregistré de bonne tentative pour :

  • Le frère de Robert prépare un rare rôti rouge.
    {lə fʁˈɛʁ də ʁobˈɛʁ pʁepˈaʁ œ̃ ʁˈaʁ ʁotˈi ʁˈuʒ.}
  • La mule court autour du mur où hurle le loup.
    {la mˈyl kˈuʁ otˌuʁ dy mˈyʁ u ˈyʁl lə lˈu.}

Si je comprends bien, mon tuteur m'a dit que les sons dans « Maman peint un grand lapin blanc. » sont plus proches les uns des autres que dans la version de la synthèse vocale. Il a aussi prononcé « doucement » avec trois syllabes au lieu de deux. Je me demande si c'est l'accent du Midi. C'est tout à fait acceptable. Maintenant, mon objectif de prononciation est juste d'être compréhensible, pas d'atteindre un accent métropolitain ou canadien. Si j'apprends la prononciation des voyelles nasales et du «r», et que j'apprends les liaisons et les lettres muettes, je pense qu'il me sera facile de prendre un accent acceptable même si ce n'est pas parfait.

Écouter mes enregistrements n'était pas très utile. Il valait mieux lire les virelangues en voix haute pendant le rendez-vous. Peut-être que je dois modifier mon interface pour écouter les courtes parties d'enregistrements. Mais je pense que la préparation des enregistrements avant le rendez-vous a été utile.

J'ai ajouté la fonctionnalité pour couper une partie au milieu de l'enregistrement dans ma bibliothèque compile-media.

Nous avons reporté la fête d'anniversaire de ma fille à cause des maladies de ses amis. Elle a invité deux familles, mais tous les enfants étaient malades. Selon la surveillance des pathogènes dans les eaux usées, quelques maladies sont très fréquentes pour le moment. Nous leur avons donné une pochette surprise et des gâteaux.

Bien que nous n'ayons pas eu de fête, nous avons acheté la pizza que nous avions prévue.

Elle a des crampes, pauvre chérie. L'axolotl réchauffé était une source de réconfort.

mercredi 25 février

Pour une fois, ma fille s'est réveillée à temps pour le petit-déjeuner. Mais l'école virtuelle a une remplaçante aujourd'hui, donc ma fille n'a pas voulu participer à la classe. C'est la vie. Je l'ai laissée décider parce que c'est sa responsabilité.

J'ai soumis le rapport annuel de mon entreprise. C'était simple.

J'ai acheté des fleurs LEGO pour l'anniversaire de ma sœur qui habite aux Pays-Bas. Nous avons les mêmes fleurs et ma fille les adore.

J'ai participé à la réunion virtuelle Emacs Berlin. Quelqu'un nous a demandé comment trier les candidats de saisie, donc j'ai expliqué le mécanisme et j'ai créé un exemple qui trie les candidats différemment. J'ai aussi démontré consult-org-headings et edebug, et j'ai discuté d'Embark et de Consult.

J'ai emmené ma fille à la patinoire pour jouer avec son amie et la troupe de scouts de son amie. J'ai apporté 2 litres de chocolat chaud, qui est plus que suffisant pour tous les enfants. Le père de son amie leur a appris à tourner plus vite. Ils ont aussi joué au loup. Même si quatre filles ont poursuivi le père, elles ne l'ont pas attrapé.

jeudi 26 février

Une fois de plus, ma fille s'est encore réveillée à l'heure du petit-déjeuner. Elle a participé à la classe. Tout allait bien. Après l'école, elle a voulu faire des courses elle-même. Elle a emprunté deux livres à la bibliothèque et elle a acheté quelques collations au supermarché. Je l'ai suivie d'un peu loin pour partager mon Internet. Elle a envie de l'indépendance, mais elle voulait aussi jouer à Pokémon Go.

J'ai modifié le mécanisme de saisie Orderless pour traiter des lettres accentuées. J'ai aussi amélioré mes fonctions qui trient les candidats de saisie par niveau au lieu de par position. Puis j'ai écrit trois articles sur mon blog : deux sur la saisie pour le Carnaval d'Emacs et un sur les intérêts convergents pour le Carnaval IndieWeb. Je suis ravie d'écrire les fonctions et les notes.

En préparation d'un autre article, j'ai rassemblé plus de 300 liens sur la saisie tirés de mon infolettre depuis quelques années. J'ai mis à jour ma fonction pour vérifier les liens et je l'ai utilisée pour identifier les liens morts. J'ai aussi commencé à en catégoriser.

J'ai créé des fonctions pour ma bibliothèque subed-record pour écouter des références audio comme celles que j'avais extraites du rendez-vous avec mon tuteur.

J'ai dû renouveler mes certificats SSL, ce qui a nécessité de mettre à jour mon logiciel pour arrêter et redémarrer le serveur web.

vendredi 27 février

J'ai créé une fonction pour utiliser la synthèse vocale pour générer un fichier de référence audio avec les sous-titres. En la combinant avec les fonctions que j'avais écrites hier, je peux probablement suivre ma progression au fil de plusieurs essais. Je dois penser à une bonne interface pour la comparaison sur Emacs et sur Google Chrome pour faciliter le partage.

Pendant le rendez-vous avec mon tuteur, j'ai encore travaillé sur tous les virelangues. Il a dit que je m'améliorais. Progrès ! Bien sûr, j'ai besoin de plus de travail pour que ce soit plus fluide, particulièrement le « r ». Mais je construis un bon flux de travail pour enregistrer mes tentatives et les réécouter, et j'ai hâte de l'améliorer.

Le soleil brillait l'après-midi. Je me suis assise sur la terrasse de bois et j'ai profité du soleil pendant que j'écrivais mon journal. C'était merveilleux que je puisse me détendre vendredi après-midi. Quand il fait beau, je veux être dehors. Je n'ai fait que taper sur mon smartphone, mais je peux aussi lire sur ma tablette. Regarder des émissions est un peu difficile à cause de la lumière vive. Je pense que ce sera meilleur si je configure finalement une synthèse vocale et Emacspeak sur mon smartphone.

L'article de Christian Tietze m'a fait penser à la façon dont l'éditeur Emacs me permet de faire beaucoup de choses parce qu'il gère bien tous les textes. Il a utilisé Tmux pour capturer l'output et diriger vers l'IA pour fermer la boucle de rétroaction. C'est prometteur.

Après mes rendez-vous avec mon tuteur, j'utilise la reconnaissance vocale pour transcrire l'enregistrement. Maintenant que c'est du texte, je peux utiliser subed.el pour écouter certains moments. Puis je peux utiliser subed-record.el pour extraire des passages dans un fichier audio avec les sous-titres corrigés. Je peux donc les écouter, enregistrer de nouvelles tentatives, et les comparer.

J'ai modifié ma configuration pour la reconnaissance vocale. Maintenant, une fois que je dis « okay, … in French », elle le traduit et affiche le résultat comme une suggestion de saisie au lieu d'insérer directement. Cette façon m'aide à me souvenir.

Ma fille était fatiguée après l'école, donc nous sommes allées jusqu'au parc au lieu de patiner.

samedi 28 février

Les résultats de l'examen médical de ma fille sont arrivés. Son ECG était normal. Elle a dit que ses palpitations sont un peu meilleures. Selon son analyse de sang, son niveau de fer était un peu bas, comme nous tous. Il faut ajuster notre nourriture. Elle me demande si les petits pains aux haricots rouges contiennent du fer. Quelle surprise, ils ont une quantité respectable. Nous sommes tous allés à la pâtisserie chinoise à vélo pour en acheter. En cours de route, nous avons participé aux raids Pokémon et nous avons attrapé quelques mega-Pokémon avec l'aide d'autres dresseurs.

Nous avons fait du lèche-vitrines à IKEA pour réfléchir à des meubles qui conviendraient à notre fille. Elle a envie du lit en mezzanine qui crée un espace pour jouer en dessous. Elle a aussi envie d'une table à abattant avec des étagères. Avant de les acheter, il faut que nous désencombrions sa chambre et que nous mesurions l'espace.

J'ai ajouté des contributions au Carnaval Emacs sur la saisie. J'ai aussi ajouté environ 300 liens issus des archives de l'infolettre Emacs News. C'était une bonne occasion pour apprendre ensemble.

J'ai commencé à regarder les émissions de Pokémon en français sur YouTube. Ma fille adore Pokémon pour le moment, donc si j'en regarde aussi, nous pouvons bavarder. Dans le premier épisode, notre protagoniste Sacha a dormi trop tard et il a reçu le dernier Pokémon, Pikachu, qui n'a pas voulu devenir ami avec lui. Mais une fois que Pikachu a vu comment Sacha a voulu le protéger contre beaucoup de Piafabecs, Pikachu l'a aidé.

J'ai essayé Claude CLI pour générer quelques serveurs MCP pour interroger mon journal en anglais et en français, mes articles sur mon blog, et mes dessins.

dimanche premier mars

J'ai désencombré l'ensemble de tiroirs dans ma chambre et la commode dans la chambre de ma fille. J'ai rempli un sac de choses à donner et j'ai jeté des choses qui étaient cassées ou trop usées.

J'ai relu mon journal pour travailler sur mes dessins quotidiens. Je veux résumer mes revues mensuelles que j'ai perdu l'habitude de faire depuis que j'ai appris le français.

Ma fille a pleuré à cause d'une rage de dents, donc je dois prendre un rendez-vous chez la dentiste bientôt. Elle a dit que ses dents sont trop serrées. Peut-être qu'elle a besoin d'un appareil orthodontique. C'est aussi possible que je ne lui aie pas assez bien brossé les dents. Je vais essayer de faire mieux, et elle doit aussi apprendre à prendre soin d'elle-même.

L'après-midi, ma fille et moi sommes allées au parc pour jouer à Pokémon Go. Nous avons raté l'événement avec des cadeaux, mais nous avons réussi à attraper deux Pokémon légendaires avec l'aide de plusieurs autres dresseurs. Il faisait froid, donc nous sommes rentrées après une heure.

Mon mari a essayé les kits électroniques micro:bit que j'avais achetés pour apprendre l'électronique avec notre fille. Il était un peu frustré par Bluetooth, mais il a finalement réussi avec un câble direct. Je veux toujours bricoler avec le kit, mais je veux aussi apprendre beaucoup d'autres choses. On va voir.

Prononciation

  • 00:00 … les rues étaient praticables
  • 00:03 Elle s'est entraînée à faire la roue.
  • 00:07 Ma fille a voulu faire des biscuits en meringues.
View Org source for this post

La semaine du 16 février au 22 février

| french

lundi 16 février

C'était le Jour de la famille, donc ma fille n'a pas eu école. Nous avons préparé des petits pains chinois au porc char siu. Cette fois, j'ai encore utilisé la recette pour les petits pains à la vapeur, mais j'ai laissé la pâte reposer plus longtemps. On s'est régalés.

Nous avons fait une promenade au parc pour jouer à Pokémon Go ensemble. Ma fille et moi avons coopéré pour battre deux arènes. Nous avons aussi attrapé beaucoup de Pokémon.

Ma fille et moi avons utilisé Claude IA pour générer des cartes mémoire pour apprendre la négation, les conjugaisons du verbe « avoir », et le vocabulaire sur la Saint-Valentin en lisant des phrases humoristiques sur les Pokémon et leurs dresseurs. Nous les avons apprises ensemble. Elle était plus amusée qu'en classe. Je pense que les cartes mémoire de l'IA seront une bonne manière d'apprendre le français si elle n'a pas la possibilité de les faire elle-même.

Comme elle a obtenu de bonnes notes et qu'elle gère bien ses propres responsabilités, je vais renouveler l'abonnement à Claude IA, qu'elle préfère pour générer des histoires interactives.

mardi 17 février

J'avais un rendez-vous avec mon tuteur pendant lequel nous avons commencé à corriger ma prononciation du texte de mon brouillon sur mon apprentissage du français. Les gens conseillent de ne pas s'inquiéter du son «r» mais que je dois travailler mes voyelles et mon rythme. Ça viendra ! Les commentaires de mon tuteur étaient immédiatement utiles. Grâce à sa correction de ma prononciation du mot « psychologique » (où il faut prononcer le « p » initial, qui est muet en anglais), après le rendez-vous, j'ai pu apprendre à ma fille la prononciation du nom « Psykokwak » qui est le Pokémon qui s'appelle Psyduck en anglais. Il était sur une des cartes mémoire hier soir. Après le rendez-vous, j'ai mis à jour mon article et mes enregistrements.

Ma fille m'a dit qu'elle avait atteint un score parfait aux questions sur la négation et les conjugaisons du verbe avoir. Bravo ! L'apprentissage du français nous donne plusieurs occasions de discuter des manières d'apprendre, ce qui est plus utile que des mots spécifiques.

Il faisait beau l'après-midi, donc je me suis assise dehors et j'ai bricolé mon smartphone pour faciliter le basculement entre le dictionnaire et Orgzly Revived en utilisant Tasker pour configurer un raccourci clavier. J'ai finalement trouvé une façon de changer le correcteur automatique de l'anglais au français sur l'application Google Docs. Il fallait utiliser l'interface web pour configurer la langue, car cette option n'est pas dans l'application mobile. L'écran de l'iPad est meilleur que celui de mon smartphone, donc si je peux l'utiliser sur le porche quand il fera beau, je pense que je vais l'apprécierai ce printemps.

Après l'école, il y avait de la brume. J'ai essayé de convaincre ma fille de sortir, mais elle a traîné des pieds. Ce n'était pas grave. Je suis allée me promener seule.

mercredi 18 février

J'ai mis à jour la police de caractères qui est créée à partir de mon écriture. Je l'ai créée il y a 6 ans et je l'utilise pour les titres sur mon site pour ajouter une touche personnelle. Maintenant que j'apprends le français, de temps en temps, ces titres sont en français. Jusqu'à présent, les lettres accentuées étaient affichées dans une police de secours. J'ai dépoussiéré mes notes, j'ai dessiné de nouvelles lettres sur mon iPad, je les ai séparées en glyphes que j'ai importés dans FontForge via Python, et j'ai copié des informations sur le crénage d'autres lettres. Le processus a pris un peu de temps parce que la bibliothèque libxml2 était obsolète et j'ai dû la remplacer par lxml. J'ai aussi dû mettre à jour mon logiciel pour convertir les lettres accentuées en noms de glyphes, parce que mon ancien code partait du principe que toutes les lettres étaient simples. J'étais ravie d'avoir réussi. Le résultat a toujours besoin d'être amélioré, mais c'est acceptable pour le moment.

Pour le déjeuner, j'ai préparé des toasts au fromage.

J'ai ajouté une commande vocale pour traduire rapidement du français en anglais quand je dis « okay, translate … ». Elle insère le résultat pour l'instant, mais ce serait peut-être mieux si je l'affichais comme une suggestion de saisie pour me forcer à taper moi-même.

C'est une bonne chose que ma fille ait son propre abonnement à Claude IA au lieu de le partager avec mon mari qui l'essayait aussi. Elle atteint toujours la limite car elle s'en sert pour combattre l'ennui pendant l'école virtuelle. Ce n'est pas un problème pour le moment parce qu'elle gère bien ses responsabilités.

Il faisait un temps de chien, avec la neige et la pluie verglaçante. Nos amis ont annulé leur événement, donc nous sommes volontiers restés à la maison. J'ai déneigé autour de la maison. La neige était très lourde, donc c'était un bon exercice.

Un brouillon pour le Carnaval IndieWeb

Ce mois-ci, le thème du Carnaval IndieWeb est « Intérêts convergents. » C'est peut-être plus facile de lister lesquels de mes centres d'intérêt ne sont pas convergents. Mes centres d'intérêt se recoupent souvent. Je vais commencer par une description de mes premiers intérêts et des façons dont ils sont liés.

La programmation est généralement utile. Je suis particulièrement intéressée par l'automatisation et les aides cognitives et physiques comme l'interface vocale. J'adore Emacs, qui est un éditeur de texte, mais je le bricole à tel point que je l'utilise pour presque tout : gérer mes notes et mes tâches, bien sûr, mais même enregistrer et éditer des fichiers audio et organiser mes dessins.

L'écriture m'aide à penser, à me remémorer et à partager. Org Mode sous Emacs me permet d'utiliser la technique de « programmation lettrée », qui est la combinaison de l'explication et de la programmation. Quelques idées sont plus faciles à penser et à exprimer par le dessin, lequel me permet de les explorer non linéairement. Mes dessins s'appliquent aussi à tous mes centres d'intérêt, comme la parentalité, la technologie, l'apprentissage et la planification. Le sketchnoting est une bonne manière d'apprendre beaucoup de choses, de partager mes notes et de me souvenir de certains moments. Par exemple, ma fille a hâte de finir une synthèse visuelle que nous avons élaborée ensemble, et qui est possible parce que j'avais écrit beaucoup de notes dans le journal web que j'avais développé et dans mon journal en français.

L'apprentissage du français depuis 4 mois touche aussi divers aspects de ma vie quotidienne. J'aide ma fille à l'école, j'essaie d'utiliser l'IA, je bricole mes outils, je regarde des émissions, je cherche des mots pour mes centres d'intérêt. Par exemple, j'ai mis à jour la police de caractères de mon écriture pour inclure les lettres accentuées. Cela a associé le dessin, la programmation, et naturellement l'apprentissage du français. J'ai aussi modifié mon environnement d'écriture sous Emacs pour rechercher les mots dans le dictionnaire et pour afficher les commentaires de l'IA. J'aime particulièrement explorer des techniques d'apprentissage avec ma fille comme les cartes mémoire et les histoires qui suivent le principe de l'apport compréhensible. Quelles méthodes sont efficaces contre quels défis, et comment nous pouvons tirer le meilleur parti des technologies disponibles ? Ce que nous apprenons nous servira bien dans tous les sujets.

De la même manière, l'apprentissage du piano m'aide à apprécier le défi et le plaisir de progresser. Une autre raison de le faire est qu'il aide ma fille à l'apprendre aussi.

Comme ma vie est remplie d'intérêts qui s'entrelacent, c'est important de gérer mon attention face à plusieurs tentations de s'éparpiller, comme la programmation de nouvelles automatisations. Je commence peut-être une tâche et je me retrouve ensuite à faire une tâche complètement différente après une suite d'étapes logiques. On sait ce que c'est, de fil en aiguille. Donc je dois écrire mes notes au fur et à mesure. Rien ne me presse et peu de mes tâches sont urgentes, donc quand je perds le fil de mes pensées, je peux rire et le retrouver. Si j'écris et que je partage ces notes, quelqu'un peut les trouver même après plusieurs années et me les rappeler. C'est très difficile de choisir un moment où j'arrête d'explorer et où je publie mes notes. La tentation est toujours de continuer à suivre une nouvelle idée.

Heureusement, l'effet cumulatif de loisirs qui se complètent m'encourage à grandir, et quand je suis bloquée dans une direction, une ou deux autres pistes se sont ouvertes. En parlant de directions, je trouve que c'est difficile d'écrire quand je veux introduire deux ou plusieurs suites d'idées simultanées, à cause de la linéarité de l'écriture. De toute façon, c'est mieux d'écrire même si c'est un peu décousu.

Je pense que la reconnaissance vocale m'aide à saisir plus d'idées et les progrès technologiques m'aident à les exécuter. Je vais aussi m'améliorer en apprenant et en reliant de nouvelles curiosités à mes autres curiosités. J'ai hâte de voir quelles sortes de choses sont possibles.

Bien que j'aie plusieurs heures de liberté maintenant que ma fille est capable de faire beaucoup de choses elle-même, il y a toujours plus de choses que je veux apprendre. Les loisirs entrelacés se développent, tandis que les loisirs isolés sont oubliés. Par exemple, je ne joue plus à Stardew Valley maintenant que ma fille n'y joue plus. C'est un jeu amusant, mais si je peux choisir un passe-temps, j'en préfère un qui serve des objectifs multiples simultanés. Le jardin de mes intérêts n'est pas formel et ordonné, mais plutôt naturel et entremêlé.

Ma fille a aussi beaucoup de centres d'intérêt. Une année elle s'est intéressée au Cube de Rubik et aux autres casse-têtes, une autre année elle apprenait tout sur Pokémon. Ça ne me dérange pas, tout se combine de façons inattendues. Ce sera intéressant de voir comment elle grandira, et moi aussi.

Merci à Zachary Kai d'accueillir le Carnaval IndieWeb ce mois-ci !

jeudi 19 février

J'ai rangé mes notes pour me préparer à envoyer les titres de mes tâches à l'IA avec mes entrées de journal et mes projets pour qu'elle me suggère d'autres ressources et des idées.

J'ai mis à jour les données pour mon client et j'ai envoyé ma facture.

Après la pause de l'après-midi, j'ai emmené ma fille chez LifeLabs pour un ECG et une prise de sang. Elle était si courageuse. Puis elle a acheté deux bols de nouilles instantanées : aux fruits de mer pour elle et au poulet pour moi. Mon habitude est d'acheter une petite friandise pour ma fille après les rendez-vous médicaux pour lui donner quelque chose qu'elle peut attendre avec impatience pendant un examen médical. Elle préférait le McDonalds, mais maintenant elle préfère les nouilles instantanées.

Pour le dîner, ma fille a préparé des boules de riz au saumon. C'était délicieux.

J'ai essayé la synthèse vocale Kokoro TTS avec un serveur FastAPI. Je la préfère à Google Traduction car elle paraît plus naturelle. Elle me permet de convertir le texte en phonèmes, ce qui est mieux que de convertir mot par mot en utilisant la base de données Lexique parce que Kokoro traite les liaisons. Kokoro génère des horodatages par mot pour l'anglais, mais pas encore pour le français. Ce n'est pas grave, je pense qu'après quelques mois, ce sera possible.

Je me demande quelle est la meilleure façon de tirer profit de mes rendez-vous avec mon tuteur. Je voudrais profiter de son expérience.

  • Nous pouvons continuer à corriger ma prononciation avec l'aide des enregistrements.
  • Nous pouvons commencer par des sons de base, puis des mots, puis des expressions, puis des phrases.
  • Il y a d'autres manières que je ne connais même pas. C'est un long voyage, je n'ai pas besoin de me dépêcher. Je suis heureuse d'essayer des façons variées pour découvrir celles qui sont bonnes pour moi (et peut-être pour ma fille).

vendredi 20 février

Je me suis couchée très tard hier soir. Au réveil, je ne trouvais plus mes lunettes. Heureusement, j'avais des paires de rechange dans un tiroir. Je les ai cherchées. Après une brève recherche, j'ai finalement retrouvé mes lunettes sur mon iPad sur l'étagère.

Pendant le rendez-vous avec mon tuteur, j'ai essayé des virelangues qu'il m'a donnés. Je me suis amusée. Le « r » est trop difficile pour l'instant, mais ça viendra un jour. Nous avons aussi corrigé des mots dans mon journal comme « suggérant » et « apprentissage ». J'ai découvert que mes horodatages n'étaient pas synchronisés avec les fichiers audio, donc j'ai lu mon journal à voix haute.

J'ai ajouté les transcriptions de l'API grâce à Kokoro TTS. Le «r» est toujours très difficile pour moi. Ça viendra un jour. Pour le moment, je vais travailler sur :

  • Maman peint un grand lapin blanc.
    {mamˈɑ̃ pˈɛ̃ œ̃ ɡʁˈɑ̃ lapˈɛ̃ blˈɑ̃.}
  • Un enfant intelligent mange lentement.
    {œ̃n ɑ̃fˈɑ̃ ɛ̃tɛliʒˈɑ̃ mˈɑ̃ʒ lɑ̃tmˈɑ̃.}
  • Le roi croit voir trois noix.
    {lə ʁwˈa kʁwˈa vwˈaʁ tʁwˈa nwˈa.}
  • Il est loin mais moins loin que ce coin.
    {il ɛ lwˌɛ̃ mɛ mwˈɛ̃ lwˌɛ̃ kə sə kwˈɛ̃.}
  • Le témoin voit le chemin loin.
    {lə temwˈɛ̃ vwˈa lə ʃəmˈɛ̃ lwˈɛ̃.}
  • Moins de foin au loin ce matin.
    {mwˈɛ̃ də fwˈɛ̃ o lwˌɛ̃ sə matˈɛ̃.}
  • La laine beige sèche près du collège.
    {la lˈɛn bˈɛʒ sˈɛʃ pʁɛ dy kɔlˈɛʒ.}
  • La croquette sèche dans l’assiette.
    {la kʁokˈɛt sˈɛʃ dɑ̃ lasjˈɛt.}
  • Elle mène son frère à l’hôtel.
    {ɛl mˈɛn sɔ̃ fʁˈɛʁ a lotˈɛl.}
  • Le verre vert est très clair.
    {lə vˈɛʁ vˈɛʁ ɛ tʁɛ klˈɛʁ.}
  • Elle aimait manger et rêver.
    {ɛl ɛmˈɛ mɑ̃ʒˈe e ʁɛvˈe.}
  • Le jeu bleu me plaît peu
    {lə ʒˈø blˈø mə plˈɛ pˈø}
  • Ce neveu veut un jeu.
    {sə nəvˈø vˈøt œ̃ ʒˈø. - Kokoro TTS utilise « vˈøt œ̃ » pour « veut un », mais Gemini et le tuteur dit que c'est « vˈø œ̃ » sans liaison.}
  • Le feu bleu est dangereux.
    {lə fˈø blˈø ɛ dɑ̃ʒʁˈø.}
  • Le cœur seul pleure doucement.
    {lə kˈœʁ sˈœl plˈœʁ dusmˈɑ̃.}
  • Le beurre fond dans le cœur chaud.
    {lə bˈœʁ fˈɔ̃ dɑ̃ lə kˈœʁ ʃˈo.}
  • Les fleurs de ma sœur sentent bon.
    {le flˈœʁ də ma sˈœʁ sˈɑ̃t bˈɔ̃.}
  • Tu es sûr du futur ? \\ ** {ty ɛ sˈyːʁ dy fytˈyʁ ?}
  • Un mur dur bloque la rue.
    {œ̃ mˈyʁ dˈyʁ blˈok la ʁˈy.}
  • OU / OÙ / OÛ:
    • Où sommes-nous, sous ce grand loup ?
      {u sˈɔmnˈu, su sə ɡʁˈɑ̃ lˈu ?}
  • Le hibou sait où il va.
    {lə ibˈu sˈɛ u il vˈa.} - Kokoro TTS utilise {sˈɛt u} pour « sait où », mais le tuteur a dit que {sˈɛ u} sans liaison.
  • O fermé (devant consonne):
    • L’homme fort mord la pomme.
      {lˈɔm fˈɔʁ mˈɔʁ la pˈɔm.}
    • Le sombre col tombe.
      {lə sˈɔ̃bʁ kˈɔl tˈɔ̃b.}
  • O ouvert / Ô / AU / EAU (fin de syllabe)
    • L’auto saute au trottoir chaud.
      {lotˈo sˈot o tʁɔtwˈaʁ ʃˈo.}
    • Le château d’en haut est beau.
      {lə ʃatˈo dɑ̃ ˈo ɛ bˈo.} - Raphael says no t; Kokoro included t liaison.

Il m'a conseillé de me concentrer sur :

  • IN / IM / AIN / EIN / UN vs AN / AM / EN / EM (lapin VS mange)
  • EU vs AI / EI / ÈGE / Ê / ETTE (Je VS laine)
  • U / Û vs OU / OÙ / OÛ (Tu VS Tout)

Kokoro TTS indique quelques liaisons, mais le tuteur et la synthèse vocale de Google Traduction sont en désaccord avec Kokoro. Je pense que je dois trouver une autre source pour les phonèmes.

Après le rendez-vous, je me suis concentrée sur la différence entre la durée attendue de mon fichier réassemblé et la durée réelle. J'ai modifié ma bibliothèque compile-media pour concaténer des résultats intermédiaires au lieu de traiter en une seule passe. Il y avait encore des bogues.

Il a plu aujourd'hui, donc nous sommes restés chez nous à l'exception de ma brève sortie pour rendre des livres à la bibliothèque.

Ma fille avait mal au dos. Je me demande si elle s'est trop étirée ou si elle avait une mauvaise posture en étant assise sur le canapé.

Nous avons ajouté quelques intérêts et des événements à notre bilan graphique de l'année de ma fille.

La bénévole qui est responsable de l'infolettre cette semaine a une urgence familiale, donc j'ai repris le rôle. C'est facile grâce à mes automatisations.

samedi 21 février

Ma fille a eu du mal à multiplier un nombre à deux chiffres par un nombre à un seul chiffre, peut-être parce qu'elle était occupée à découdre une couture sur sa jupe. Elle est partie en trombe.

Ma fille a reçu de belles fleurs de ses tantes pour son anniversaire. Elle a remarqué que les fleurs LEGO ressemblent beaucoup aux vraies fleurs. Maintenant, notre table a un total de trois vases de fleurs : deux LEGO et un vrai. Elle aime bien les fleurs.

Mon mari et moi avons discuté pour savoir si nous voulions l'ancien four dont son frère s'était débarrassé. D'un côté, cela nécessite de l'argent pour louer un fourgon et demande des efforts pour l'installer, et nous nous étions débrouillés avec seulement notre mini four. D'un autre côté, c'est probablement une bonne occasion pour nouer des liens.

Ma fille et moi avons fait les courses. Nous avons aussi attrapé un Abra Dynamax sur Pokémon Go. Elle a fait tomber un de mes écouteurs Bluetooth et il est tombé dans une flaque, mais heureusement, il fonctionne après avoir séché.

J'ai modifié ma bibliothèque compile-media pour remettre tous les horodatages de paquets audio. Maintenant, la durée du fichier audio final est précise, ce qui permet l'utilisation de MFA pour générer les horodatages par mot.

J'ai commencé à réfléchir à une interface d'analyse de ma prononciation des virelangues. Je veux voir les formes d'onde de l'audio dans un tableau pour faciliter le lancement et la comparaison.

Mon interface de Reddit a commencé à traduire automatiquement toutes les discussions et les commentaires en français. Bien ! Ça transforme mon scrolling en un entraînement à la compréhension.

Ma fille a voulu dessiner un arbre d'intérêts comme l'arbre de lecture que je lui avais fait quand elle apprenait à lire. Elle a fait une petite erreur. J'ai dit que tous les artistes le font, mais elle est devenue trop frustrée et elle est encore partie en trombe. La première fois que j'ai vérifié si elle allait bien, elle était toujours de mauvaise humeur. La deuxième fois, je n'ai fait que des sons du Pokémon Psykokwak. Elle s'est assez amusée à répondre par des sons de Psykokwak. Après un peu plus de détente, elle était prête à demander du ruban correcteur à mon mari. Je pense que le perfectionnisme est un défi pour ma fille.

dimanche 22 février

Ma fille a organisé une réunion virtuelle avec ses tantes et ses cousines. C'était sympa de converser avec elles.

Je me suis dépêchée d'emmener ma fille à son cours de patinage. Nous sommes arrivées un peu tard. Ils ont continué avec l'évaluation des compétences telles que le patinage en arrière. Je pense que ce n'était pas grave, mais j'aimerais vraiment que ma fille trouve un moyen de se préparer à partir plus vite.

Je me suis entraînée aux virelangues en français que mon tuteur m'a donnés. J'ai généré des modèles audio grâce à la synthèse vocale Kokoro, et j'ai ajouté des pauses avec FFmpeg. De cette façon, je peux essayer le virelangue pendant le silence. J'ai enregistré mes tentatives pour les écouter avec mon tuteur mardi, mais je n'en suis pas totalement satisfaite.

  • 00:00 Maman peint un grand lapin blanc.
  • 00:02 Un enfant intelligent mange lentement.
  • 00:05 Le roi croit voir trois noix.
  • 00:07 Il est loin mais moins loin que ce coin.
  • 00:09 Le témoin voit le chemin loin.
  • 00:11 Moins de foin au loin ce matin.
  • 00:14 La laine beige sèche près du collège.
  • 00:16 La croquette sèche dans l'assiette.
  • 00:18 Elle mène son frère à l'hôtel.
  • 00:20 Le verre vert est très clair.
  • 00:22 Elle aimait manger et rêver.
  • 00:24 Le jeu bleu me plaît peu.
  • 00:26 Ce neveu veut un jeu.
  • 00:27 Le feu bleu est dangereux.
  • 00:29 Le beurre fond dans le cœur chaud.
  • 00:31 Les fleurs de ma sœur sentent bon.
  • 00:33 Un mur dur bloque la rue.
  • 00:36 Le hibou sait où il va.
  • 00:37 L’homme fort mord la pomme.
  • 00:39 Le sombre col tombe.
  • 00:40 L’auto saute au trottoir chaud.
  • 00:43 Le château d’en haut est beau.
  • 00:45 Le cœur seul pleure doucement.

J'ai aussi emmené ma fille chez Sephora pour acheter quelque chose. Elle a choisi un étui pour son désinfectant pour les mains qu'elle peut décorer avec des breloques. Je pense que c'est un peu cher, mais elle peut choisir ce qu'elle veut acheter avec ses propres économies. Elle a voulu m'acheter quelque chose, donc j'ai suggéré des élastiques pour cheveux.

Mon mari a préparé beaucoup de petits gâteaux à l'ananas et à la betterave pour la fête d'anniversaire de ma fille mardi. Parce que notre mini four ne peut cuire que six petits gâteaux à la fois et que la recette utilise du bicarbonate de soude pour faire lever la pâte, car elle réagit une fois qu'il est mélangé, il pense que c'est mieux de diviser les ingrédients en deux lots avant de les mélanger. Il a préparé trois fournées de petits gâteaux et un gâteau.

Prononciation

  • 00:00 … des cartes mémoire pour apprendre la négation, les conjugaisons du verbe « avoir », et le vocabulaire sur la Saint-Valentin…
  • 00:13 … j'ai mis {sans liaison} à jour mon article et mes enregistrements.
  • 00:18 … ce qui est plus {liaison} utile que des mots spécifiques.
  • 00:23 … je me suis assise dehors et j'ai bricolé mon smartphone…
  • 00:28 Il fallait utiliser l'interface web pour configurer la langue …
  • 00:35 … je pense que je l'apprécierai ce printemps.
  • 00:39 Après l'école, il y avait de la brume.
  • 00:44 … je l'affichais comme une suggestion de saisie pour me forcer à taper moi-même.
View Org source for this post