CoolFace
Datasetpublic

Ugiat/multilingual_librispeech_french_punctuated

Multilingual LibriSpeech French, punctuated and capitalized (train) A derivative of the French part of Multilingual LibriSpeech (MLS), the corpus of read audiobooks from LibriVox published by Vineel Pratap, Qiantong Xu, Anuroop Sriram, Gabriel Synnaeve and Ronan Collobert (Facebook AI Research). MLS distributes its transcriptions lowercased and without any punctuation. This dataset keeps that upstream text untouched in the text column and adds a second column, text_punctuated… See the full description on the dataset page: https://huggingface.co/datasets/Ugiat/multilingual_librispeech_french_punctuated.

sourceHugging Facecc-by-4.0updated 14h agoView on Hugging Face
0likes
Dataset Card

Multilingual LibriSpeech French, punctuated and capitalized (train)

A derivative of the French part of [Multilingual LibriSpeech (MLS)](https://huggingface.co/datasets/facebook/multilingual_librispeech), the corpus of read audiobooks from LibriVox published by Vineel Pratap, Qiantong Xu, Anuroop Sriram, Gabriel Synnaeve and Ronan Collobert (Facebook AI Research). MLS distributes its transcriptions lowercased and without any punctuation. This dataset keeps that upstream text untouched in the text column and adds a second column, text_punctuated, with punctuation and capitalization restored automatically.

  • 258,213 segments, 1,076.58 hours of French read speech (16 kHz), the complete MLS French train split, from 142 LibriVox readers and 157 books.
  • The audio is upstream's, byte for byte, and every row keeps its MLS identifier, speaker, book and the link to the original LibriVox recording, so the dataset is self-contained and every row can be traced back.
  • The punctuation is machine-generated and has not been reviewed by humans, but it was scored against the punctuation of the original books (see How good is the punctuation).
  • Words are never changed: after lowercasing and ignoring punctuation, text_punctuated has exactly the letters of text in every row. That includes spelling variants such as the `œ` ligature, which the source uses inconsistently (see Spelling variants and the œ ligature).

This derivative was prepared by Ugiat Technologies. It is an independent work and is not produced, reviewed or endorsed by the authors of MLS, Meta, LibriVox or Project Gutenberg.

Why this dataset

Most public speech corpora ship transcriptions that were normalized for classic ASR training: lowercase, no punctuation, numbers spelled out. MLS is one of them. An ASR model trained only on such text can output nothing but an unpunctuated, lowercase stream of words.

Many applications need the final transcription to be readable as it comes out: subtitles, dictation, meeting minutes, voice assistants, search over transcribed audio. There are two ways to get there:

  • Two stages: run the ASR, then apply a separate punctuation-and-casing model to its text. It works, but it adds a second model, and that model cannot hear the audio: pauses and intonation carry a large part of what punctuation encodes.
  • One stage: train the ASR model to emit punctuated and capitalized text directly. That requires audio paired with punctuated, cased transcriptions.

MLS French is one of the largest openly licensed French speech corpora, but it could only train the first kind of model. This dataset provides punctuated and capitalized targets for its 1,076.58 hours, and keeps the original normalized text next to them, so both kinds of model can be trained from the same audio and compared fairly.

It is a silver-standard resource: the punctuation is predicted, not written by people, which makes it well suited to training and less suited to being used as a gold reference (see Limitations).

Example

`text` (upstream, unchanged)`text_punctuated` (added here)
hérode entendant ces bruits différents disait cet homme est jean à qui j'ai fait trancher la tête et qui est ressuscité d'entre les mortsHérode, entendant ces bruits différents, disait: « Cet homme est Jean, à qui j'ai fait trancher la tête, et qui est ressuscité d'entre les morts. »
cette réponse faite jasper hobson retourna près de la fenêtre pendant ce temps mrs paulina barnett madge et les autres femmes réunies autour du sergent écoutaient ce brave soldat qui traitait cette question des ours en homme d'expérienceCette réponse faite, Jasper Hobson retourna près de la fenêtre. Pendant ce temps, Mrs Paulina Barnett, Madge et les autres femmes réunies autour du sergent écoutaient ce brave soldat qui traitait cette question des ours en homme d'expérience.
il faut mourir madame luy dit-il et tout à l'heure puis qu'il faut mourir répondit-elle en le regardant les yeux baignez de larmes donnez moy un peu de temps pour prier dieu« Il faut mourir, Madame », luy dit-il. « Et tout à l'heure. » « Puis qu'il faut mourir », répondit-elle en le regardant, les yeux baignez de larmes. « Donnez moy un peu de temps pour prier Dieu. »
toute confrérie a ses emblèmes et personne n'y connaît goutte mais brulette comprit fort bien se troubla un peu emporta la lettre et l'examina souvent je peux croire d'un oeil moins indifférent qu'elle ne le prétendaitToute confrérie a ses emblèmes, et personne n'y connaît goutte; mais Brulette comprit fort bien, se troubla un peu, emporta la lettre et l'examina. Souvent, je peux croire, d'un oeil moins indifférent qu'elle ne le prétendait.

The third row is from Perrault and keeps his 17th-century spelling (luy, moy, baignez). In the fourth row the model wrote œil; the source spelling oeil was put back (see below).

Dataset structure

Data fields

FieldTypeDescription
idstringMLS segment identifier, <speaker>_<book>_<segment>. Unique.
audioAudio(16 kHz)The segment audio, mono, exactly the bytes distributed upstream (Ogg Opus).
textstringThe upstream transcription, verbatim: lowercase, no punctuation, no digits.
text_punctuatedstringThe same transcription with punctuation and capitalization added. New in this dataset.
speaker_idstringLibriVox reader id (upstream).
chapter_idstringUpstream column, kept under its upstream name. Despite the name it is the LibriVox book id, not a chapter: MLS files are stored as <speaker>/<book>/<speaker>_<book>_<segment>, and MLS's metainfo.txt lists this number as BOOK ID (for example 10039 is Saint Évangile selon Saint Marc, read over many chapters).
book_titlestringTitle of the book, as given in MLS's metainfo.txt. New.
book_authorstringAuthor(s) of the book, from the LibriVox catalogue (librivox.org/api), ;-separated. Missing for one book with no author listed. New.
durationfloat32Segment length in seconds (upstream audio_duration, rounded to milliseconds).
begin_time, end_timefloat64Position of the segment, in seconds, inside the original LibriVox recording (upstream).
original_pathstringURL of the original LibriVox MP3 the segment was cut from (upstream).

text deliberately keeps the meaning it has upstream, so anything that already reads MLS's transcript column can read text. Use text_punctuated when you want punctuated and cased targets.

Data instance

python
{
  'id': '10065_10039_000001',
  'audio': {'path': '10065_10039_000001.opus', 'array': array([...], dtype=float32), 'sampling_rate': 16000},
  'text': "hérode entendant ces bruits différents disait cet homme est jean à qui j'ai fait trancher la tête et qui est ressuscité d'entre les morts",
  'text_punctuated': "Hérode, entendant ces bruits différents, disait: « Cet homme est Jean, à qui j'ai fait trancher la tête, et qui est ressuscité d'entre les morts. »",
  'speaker_id': '10065',
  'chapter_id': '10039',
  'book_title': 'Saint Évangile selon Saint Marc',
  'book_author': None,
  'duration': 11.14,
  'begin_time': 183.2,
  'end_time': 194.34,
  'original_path': 'http://www.archive.org/download/evangilestmarc-lemaistredesacy_1507_librivox/evangilestmarc_06_lemaistredesacy_64kb.mp3'
}

Statistics

Segments258,213
Hours1,076.58
Readers (speaker_id)142
Books (chapter_id)157

Segment duration: mean 15.01 s, median 14.95 s, from 10.00 s to 20.00 s. Average length: 37.2 words per segment.

Punctuation in text_punctuated (per 100 words): 7.11 commas, 5.51 full stops, 0.50 question marks, 0.31 colons, 0.30 semicolons, 0.51 exclamation marks. 99.90% of segments start with a capital letter or an opening mark and 99.00% end with a closing mark. 59,422 segments (23.01%) contain French quotation marks « » for direct speech. 32 segments have no punctuation mark at all.

Loading

python
from datasets import load_dataset

ds = load_dataset("Ugiat/multilingual_librispeech_french_punctuated", split="train")
row = ds[0]
print(row["text"])
print(row["text_punctuated"])
print(row["audio"]["sampling_rate"])   # 16000

# streaming, without downloading everything first
ds = load_dataset("Ugiat/multilingual_librispeech_french_punctuated", split="train", streaming=True)

Relationship to the original dataset

Please read this section before using the data: everything that differs from upstream is listed here.

  1. 1.Split. This is the complete train split of the MLS french configuration (258,213 of 258,213 segments, checked by identifier), built from the upstream repository at revision 2e83e61823b4c47dcbcb1980bb88601274127609. The dev (2,416) and test (2,426) splits are not included; use upstream for those. The upstream 9_hours and 1_hours limited-supervision subsets are drawn from train, so their segments are here too.
  2. 2.Audio. Unchanged: the audio bytes are copied from the upstream Parquet files (checked for every file). Upstream stores Ogg Opus at 16 kHz, which is a lossy format; nothing was re-encoded.
  3. 3.Columns. Kept from upstream: id, audio, speaker_id, chapter_id, begin_time, end_time, original_path. Renamed: transcripttext and audio_durationduration. Dropped: file, which is <id>.opus in every row. Added: text_punctuated, book_title and book_author.
  4. 4.`text` is upstream, unchanged. In every row it is byte-identical to upstream transcript.
  5. 5.`text_punctuated` is new. Compared with text it differs in:
  6. 6.punctuation and capitalization (the purpose of this dataset);
  7. 7.hyphens, apostrophes and word boundaries that the upstream text lost, which the model restores: inversions and imperatives (faites vousfaites-vous, mange t ilmange-t-il, donnez ledonnez-le), elisions (qu ilqu'il, de l histoire de ganemDe l'histoire de Ganem), and words glued together or split in the upstream text (ensuiteàensuite à, soimêmesoi-même, lo nglong). The word segmentation of text_punctuated differs from text in 16,132 segments (6.25%);
  8. 8.the sequence of letters is never changed: after lowercasing and ignoring punctuation, spaces, hyphens and apostrophes, text_punctuated equals text in 100% of the segments (checked for every row).

Words are not corrected, modernized or rewritten: old spellings, the source's choice between œ and oe, missing accents and OCR errors all stay exactly as they are in the upstream text.

Spelling variants and the œ ligature

The MLS French transcriptions were produced from the texts of the books that the LibriVox volunteers read, and they keep the spelling of each edition. The clearest case is the ligature œ:

  • Upstream uses both spellings, in similar amounts. 8,799 segments (3.41%) contain œ, but the plain digraph oe is just as common for the same words:
ligaturecountdigraphcount
cœur3,842coeur3,018
sœur915soeur869
œil478oeil453
mœurs455moeurs172
œuvre316oeuvre141
bœuf119boeuf119
manœuvre87manoeuvre120
  • It follows the book. Of the 157 books, 52 use only œ, 65 only oe, 29 mix both and 11 contain neither.
  • The punctuation model "modernized" it. Asked to keep every word exactly, the model nevertheless rewrote oe as œ in 6,194 segments (6,552 words). Those words were put back to the upstream spelling (see the next section), so text_punctuated uses œ exactly where text does.
  • æ also occurs, in 47 segments.

We left the choice as it is on purpose: both spellings are correct French, and "fixing" one of them would change the words of the transcription. If you train a tokenizer or a model on this text, check that œ/Œ are in your vocabulary, and if you want a single spelling, normalize it in your own training pipeline rather than in the data. Check it by encoding words with the tokenizer itself (œil, Œuvre, cœur), not by reading its vocabulary file: we first read a SentencePiece vocabulary as if it were a WordPiece one, and it wrongly suggested that a word-initial œ could not be encoded.

Other properties of the upstream text that are kept as they are:

  • Old spellings from older editions (luy, moy, baignez, non-seulement).
  • Missing accents on capitals. Older French typography often printed capitals without accents, and MLS lowercased the text, so some segments start with a where modern spelling has à. text_punctuated then starts with A (A cette réponse, …). The model wanted À in 1,410 such segment starts.
  • OCR errors in the source texts, for example htstotrë du quathtëmë frëke for histoire du quatrième frère, or dtails ajouts with the accented letters missing. They are rare, and they are not corrected.

How the punctuation was produced

MLS provides no punctuated text, so text_punctuated is a prediction, not the punctuation of the books.

  1. 1.Batches of segments were sent to Anthropic's Claude Haiku 4.5 (claude-haiku-4-5-20251001), with an instruction to restore capitalization and punctuation following standard French orthography and to keep every word exactly as given. The instruction is reproduced at the end of this section. About 65% of the segments were sent in batches of 200 and the rest in batches of 8.
  2. 2.Every answer was checked automatically. It was accepted as it was when its letters were identical to the input (ignoring case, punctuation, spaces, hyphens and apostrophes): 217,772 segments (84.34%).
  3. 3.When the model had changed words, its words were not used. Its punctuation and capitals were transferred onto the original words by word-level alignment, provided the model had kept at least half of the words: 40,441 segments (15.66%). The model changed words mainly by modernizing spelling (oeœ), correcting the source (a parisà Paris), repairing OCR errors (dtails ajoutsdétails ajoutés) and dropping words it found redundant.
  4. 4.The same check caught one more failure. In 7 segments the model returned a different passage of the same book, apparently recalled from memory (Les Mille et une Nuits, Heidi, Balzac, Verne) instead of the segment it was given. Together with 3 segments where it had changed more than half of the words (two garbled by OCR, one very short), these 10 segments were sent again one at a time and punctuated as above; the transfer was applied to them whatever the share of words kept.
  5. 5.The model often wrote the French typographic space before ; : ? ! even though it was told not to (in 16.8% of the answers accepted in step 2). Those spaces were removed: in text_punctuated these marks are attached to the previous word, as in the human punctuation of the French VoxPopuli corpus. French quotation marks keep a normal space inside (« Bonjour »). There are no non-breaking spaces.
  6. 6.The final data was verified against upstream row by row (the checks listed in the previous section).

In the end every segment has punctuation predicted by the same model, with the upstream letters unchanged.

<details> <summary>The instruction given to the model</summary>

text
You are restoring proper French orthography (capitalization and punctuation) to raw transcripts of read speech (audiobooks) that are currently all-lowercase and unpunctuated.

Rules:
- Preserve every word EXACTLY as given — do not add, remove, reorder, correct, modernize or paraphrase any word, even if it looks like a typo or an old-fashioned spelling.
- Keep hyphens and apostrophes exactly as they appear in the input; do not add or remove them. Use the straight apostrophe ' as in the input.
- Only add capitalization (proper nouns, sentence starts, titles as standard French requires) and punctuation (periods, commas, question marks, exclamation marks, colons, semicolons, ellipses, quotation marks).
- Each item is a short segment cut out of a longer text: begin it with a capital letter and end it with an appropriate final mark even if it is only a fragment of a sentence.
- Write . , ? ! : ; attached to the preceding word, with NO space before them and no non-breaking spaces. For direct speech use « and » with a normal space inside (« Bonjour, dit-il. »); use them only where the text clearly contains direct speech.
- Split run-on text into several correct sentences where grammatically appropriate, but do not invent sentence breaks around simple conjunctions (et, mais, ou, car, donc) unless truly warranted.
- Your ENTIRE response must be nothing but the JSON array itself — no preamble sentence, no explanation, no markdown code fences, no trailing commentary. The first character of your response must be "[".

Input (JSON array of {n} raw transcripts):
{input_json}

{n} and {input_json} were replaced by the number of segments in the batch and the batch itself as a JSON array. The model was called with the system prompt "You are a text-only French orthography restoration tool. Output only the requested JSON array."

</details>

How good is the punctuation

No human reviewed text_punctuated. We measured it in two ways.

1. Against the books. MLS audiobooks are read from real books, so for books whose text is on Project Gutenberg the author's punctuation can be recovered. We took eight books by different authors and periods, located each segment in the Gutenberg edition by its exact word sequence (27,217 of 29,191 segments were found exactly once), and compared the marks between every pair of consecutive words inside a segment:

Book (Project Gutenberg edition)Segments scoredComma P / R / F1Sentence end P / R / F1
L'île mystérieuse (Jules Verne, PG #14287)4,572 of 5,2790.85 / 0.60 / 0.710.89 / 0.69 / 0.78
Notre-Dame de Paris (Victor Hugo, PG #19657)4,269 of 4,7110.75 / 0.72 / 0.740.77 / 0.83 / 0.80
Germinal (French) (Émile Zola, PG #5711)4,153 of 4,3180.84 / 0.53 / 0.650.72 / 0.69 / 0.70
Rouge et le noir (Stendhal, PG #798)3,794 of 3,9310.77 / 0.60 / 0.680.67 / 0.90 / 0.77
Madame Bovary (French) (Gustave Flaubert, PG #14155)3,034 of 3,1310.80 / 0.60 / 0.690.78 / 0.67 / 0.72
Mille et une nuits, tome 1 (Anonymous, PG #15371)2,777 of 3,0290.82 / 0.72 / 0.770.63 / 0.92 / 0.75
Maîtres sonneurs (George Sand, PG #20254)2,567 of 2,7050.85 / 0.61 / 0.710.68 / 0.81 / 0.74
Chants de Maldoror (Comte de Lautréamont, PG #12005)2,051 of 2,0870.79 / 0.40 / 0.530.68 / 0.75 / 0.72
All eight books27,217 of 29,1910.81 / 0.60 / 0.690.74 / 0.77 / 0.75

P = precision, R = recall. "Sentence end" is any of . ? ! …. Semicolons and colons, compared as a third class, score F1 0.32: where the author wrote ; or :, the model usually wrote , or ..

How to read these numbers:

  • Commas are under-predicted. A comma the model writes is usually also in the book (precision around 0.8), but the model writes only about 60% of the author's commas. 19th-century literary prose uses many more commas than the model does.
  • Most sentence-boundary differences are a matter of style: the author ends a sentence where the model writes a comma or a semicolon, or the reverse (Zola: oseraient taper sur des femmes. Et les hommes, model: …sur des femmes, et les hommes). A smaller part are real errors that join or split sentences in the wrong place.
  • The book edition on Gutenberg is not necessarily the one the volunteer read, so a few differences come from the edition, not the model.
  • Segment edges. Segments are cut at pauses, not at sentence boundaries. The book has a sentence end at the end of 69.7% of the segments and a capital at the start of 74.6%. The model was asked to treat every segment as a sentence, so text_punctuated ends with a sentence mark in 98.9% of them and starts with a capital in 99.9% (see Limitations).

2. Against human punctuation. Before the full run, the same model and instruction were tested on 400 segments of the French part of VoxPopuli, whose human-written punctuation is available: comma F1 0.79 and sentence-end F1 0.97 (a previously used automatic punctuation model scored 0.68 and 0.73). That speech is parliamentary rather than literary, which is why it scores higher than the books.

Uses

Intended for training and evaluating speech recognition that outputs punctuation and capitalization, and for training text models that restore them. It can also serve as a plain French ASR training set through the text column, exactly as upstream.

Out of scope: using text_punctuated as a gold standard to evaluate punctuation quality (it is predicted); identifying speakers (see below).

Limitations

  • The punctuation is machine-generated. Expect errors, above all missing commas in long literary sentences (see the scores above).
  • It is not the punctuation of the books. Where you need the author's punctuation, recover it from the source texts: the LibriVox catalogue lists the text used for each book, and book_title, book_author and chapter_id make that possible.
  • Every segment is punctuated as if it were a sentence. Segments are cut at pauses, so many start or end in the middle of a sentence, but text_punctuated almost always starts with a capital and ends with a mark. Remove the first capital and the final mark if your model should mark sentence boundaries only where the text has them.
  • Dialogue. « » are placed when the model recognizes direct speech; the marks can be unbalanced within a segment (a quotation that starts or ends outside the segment), and the dialogue punctuation follows classical typography (« Dans toute la force du terme, » répondit la comtesse).
  • Spelling is the source's: œ/oe, old forms, missing accents on capitals and OCR errors are kept (see above). There are no digits or symbols: numbers are spelled out.
  • Proper-noun capitalization is inferred by the model and may be inconsistent.
  • Read speech from old books. The audio is volunteers reading literature in the public domain, not spontaneous speech, and the language is often dated. As LibriVox itself warns, many of the books "are very old, and may contain language or express notions that are antiquated at best, offending at worst".
  • Train split only.

Licensing, attribution and terms of use

  • License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), the same license as upstream MLS. You may share and adapt this dataset, including commercially, as long as you give appropriate credit, link to the license and indicate if changes were made.
  • Credit. The corpus is the work of the authors of MLS (Facebook AI Research, see the citation below). The recordings are by the volunteer readers of LibriVox. LibriVox states that it "records only texts that are in the public domain (in the USA …), and all our recordings are public domain (definitely in the USA, and maybe in your country as well)"; public-domain status can differ outside the USA. The book texts come from public-domain editions (Project Gutenberg, Gallica, Wikisource and others, as listed in the LibriVox catalogue). MLS was added to the Hugging Face Hub by @patrickvonplaten and @polinaeterna.
  • Speakers. The upstream card states that the dataset "consists of people who have donated their voice online" and that users agree not to attempt to determine the identity of the speakers. We ask users of this derivative to follow the same rule.
  • Machine-generated punctuation. text_punctuated was generated with Claude Haiku 4.5, a model by Anthropic.
  • Changes made (required by the license): see Relationship to the original dataset.

Please cite the original corpus

If you use this dataset, please cite MLS and mention this derivative:

bibtex
@article{Pratap2020MLSAL,
  title={MLS: A Large-Scale Multilingual Dataset for Speech Research},
  author={Vineel Pratap and Qiantong Xu and Anuroop Sriram and Gabriel Synnaeve and Ronan Collobert},
  journal={ArXiv},
  year={2020},
  volume={abs/2012.03411}
}

(The paper was presented at INTERSPEECH 2020.)

Suggested reference for this derivative:

bibtex
@misc{multilingual_librispeech_french_punctuated,
      title={Multilingual LibriSpeech French, punctuated and capitalized (train)},
      author={Ugiat},
      organization={Ugiat Technologies},
      year={2026},
      howpublished={\url{https://huggingface.co/datasets/Ugiat/multilingual_librispeech_french_punctuated}},
      note={Derivative of Multilingual LibriSpeech (Pratap et al., 2020), CC BY 4.0}
}

Contact

Ugiat Technologies, <ugiat@ugiat.com>.