Visualizing the balance of speaking in my French conversations with tutors

| french, python, learning, visualization

I've been studying French since November 2025 because I want to help my daughter learn it. After about eight months of taking pronunciation tutoring sessions once or twice a week and writing my journal in French, I decided to try conversation-focused tutoring sessions in June 2026. These sessions help me get used to talking and identify the gaps in my active vocabulary.

These tutoring conversations feel quite different from other conversations I have. In real-life conversations with my husband and daughter, we usually leave a lot of space between sentences. When I'm hanging out with other people, I prefer to listen more than I talk. Tutoring sessions are different. I am investing time and money in practising talking. I can get a lot of listening practice from YouTube, so it's less about listening to people, although I still want to practice asking follow-up questions and connecting what the tutor says with my personal experiences.

In those conversation classes with French tutors, I want to get a sense of how much I'm actually talking. I was motivated to visualize this after some sessions with a tutor who tended to go into lecture mode. I found myself needing to be a bit firmer about directing the conversation instead of slipping into a more passive role.

I use OBS to record my sessions (with the tutor's permission, of course). I've configured it so that my microphone goes on one track and my computer audio goes on another track, which makes it easy to analyze my side of the conversation without needing to use speaker diarization.

I used Google Gemini to generate a script that uses Silero voice activity detection to analyze my side of the multi-track MKV recording.

Here's the file it generated. file:///home/sacha/proj/speech/vad-file.py

I call it with:

for FILE in ~/recordings/*conversation*.mkv; do if [ ! -f "$FILE-vad.txt" ]; then python vad-file.py -f "$FILE" -t 2 sacha 3 tutor -s 500 -o "$FILE-vad.txt"; fi; done

Then I can make a table analyzing different recordings:

(sacha-vad-tutor-make-table (directory-files sacha-recordings-dir t "-vad\\.txt\\'"))

Definition: sacha-vad-tutor-make-table

The green bars represent the time that I spent speaking, and the black bars usually correspond to when the tutor is speaking.

Date Tutor Minutes % Visualization
2026-06-05 R 26 58%
2026-06-12 R 25 59%
2026-06-16 R 26 59%
2026-06-26 R 29 65%
2026-07-17 R 30 65%
2026-07-31 R 28 59%
2026-08-04 R 34 72%
2026-08-14 R 30 70%
2026-08-21 R 28 62%
2026-09-03 R 32 69%
2026-09-08 C 18 55%
2026-09-18 R 26 61%
2026-09-25 I 21 36%
2026-09-29 I 32 58%
2026-10-09 R 33 69%

One of the things I like about my regular tutor is that he has a technical background (uses Linux and Neovim, experiments with AI), so I enjoy talking about projects and ideas with him. In my conversation classes, he does a good job of asking follow-up questions, suggesting things I could try, and correcting or filling in the occasional thing I'm trying to find a word for in French.

For fun, I decided to make a real-time display of this too: Using Emacs to visualize speaking and target words/phrases in real-ish time. I'm usually too focused on figuring out what to say in French to actually pay attention to that during the conversation itself, but maybe it'll be handy someday.

My next steps could include analyzing the other side of the conversation to find out my average time to respond. People usually start speaking within 200 milliseconds of the end of the other speaker's turn. I take a lot longer because I'm still formulating my thoughts and finding words, but it might be interesting to track my progress.

View Org source for this post