<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Whisper | Languages, Territory and AI Research Group</title><link>https://giltia.github.io/tag/whisper/</link><atom:link href="https://giltia.github.io/tag/whisper/index.xml" rel="self" type="application/rss+xml"/><description>Whisper</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Thu, 09 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://giltia.github.io/media/icon_hu_4650b61b0e05ba9e.png</url><title>Whisper</title><link>https://giltia.github.io/tag/whisper/</link></image><item><title>Whisper-LM con léxico maya: corrección de transcripciones ASR de maya yucateco usando Gemini y un diccionario como referencia</title><link>https://giltia.github.io/es/publication/whisper-lm-yua-lexicon-rag/</link><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid>https://giltia.github.io/es/publication/whisper-lm-yua-lexicon-rag/</guid><description>&lt;h2 id="qué-problema-resuelve-este-cuaderno"&gt;¿Qué problema resuelve este cuaderno?&lt;/h2&gt;
&lt;p&gt;Whisper, el sistema de reconocimiento automático de voz (ASR) de OpenAI, no incluye el maya yucateco entre sus lenguas soportadas. Al transcribir audio en maya, el modelo produce salidas muy ruidosas y con frecuencia &amp;ldquo;detecta&amp;rdquo; la lengua equivocada: en nuestros datos, segmentos en maya fueron etiquetados como español, inglés e incluso japonés. Este cuaderno explora una pregunta práctica: &lt;strong&gt;¿cuánto puede mejorar un modelo de lenguaje grande (LLM) la salida de Whisper si le damos un léxico maya como referencia?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="arquitectura-del-pipeline"&gt;Arquitectura del pipeline&lt;/h2&gt;
&lt;p&gt;El flujo completo es:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Audio → Whisper (turbo) → Normalizador de reglas → Gemini + léxico → Normalizador → Evaluación (CER/WER)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="1-datos-de-entrada"&gt;1. Datos de entrada&lt;/h3&gt;
&lt;p&gt;Se parte de un CSV (&lt;code&gt;transcription_results41Turbo.csv&lt;/code&gt;) con 1,010 segmentos de audio ya transcritos por Whisper turbo. Cada fila incluye la transcripción de referencia hecha por humanos (&lt;code&gt;original_transcription&lt;/code&gt;), la predicción de Whisper (&lt;code&gt;whisper_prediction&lt;/code&gt;), la lengua detectada y métricas iniciales (chrF, WER, CER).&lt;/p&gt;
&lt;h3 id="2-léxico-maya-como-referencia-componente-rag"&gt;2. Léxico maya como referencia (componente RAG)&lt;/h3&gt;
&lt;p&gt;Se carga un diccionario maya–español en formato TSV (&lt;code&gt;yua_dictionary.tsv&lt;/code&gt;) con &lt;strong&gt;2,988 entradas&lt;/strong&gt;. Una clase &lt;code&gt;YuaLexicon&lt;/code&gt; ofrece búsqueda exacta y búsqueda difusa (&lt;em&gt;fuzzy matching&lt;/em&gt; con &lt;code&gt;difflib.get_close_matches&lt;/code&gt;), lo que permite encontrar la palabra maya válida más cercana a un token mal transcrito.&lt;/p&gt;
&lt;h3 id="3-normalizador-ortográfico-basado-en-reglas"&gt;3. Normalizador ortográfico basado en reglas&lt;/h3&gt;
&lt;p&gt;Antes y después de pasar por el LLM, el texto se normaliza con reglas lingüísticas del maya yucateco tomadas de una gramática de referencia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reglas morfológicas de raíz&lt;/strong&gt;: por ejemplo, &lt;em&gt;bin&lt;/em&gt; (ir) con raíz irregular &lt;em&gt;xi&amp;rsquo;&lt;/em&gt; en futuro indefinido intransitivo, o posicionales como &lt;em&gt;chil&lt;/em&gt;, &lt;em&gt;kul&lt;/em&gt; y &lt;em&gt;wa&amp;rsquo;al&lt;/em&gt; que pierden la &lt;em&gt;l&lt;/em&gt; antes de &lt;em&gt;-tal&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrones regulares &amp;ldquo;seguros&amp;rdquo;&lt;/strong&gt;: &lt;em&gt;bins&lt;/em&gt; → &lt;em&gt;bis&lt;/em&gt;, &lt;em&gt;taals&lt;/em&gt; → &lt;em&gt;taas&lt;/em&gt;, y verbos que cambian la &lt;em&gt;b&lt;/em&gt; final por estructura con saltillo (&lt;em&gt;jáalk&amp;rsquo;ab&lt;/em&gt; → &lt;em&gt;jáalk&amp;rsquo;a&amp;rsquo;a&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación contra el léxico&lt;/strong&gt;: si la forma normalizada existe en el diccionario, se conserva; si la original era válida, se respeta.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-corrección-con-gemini-whisper-lm"&gt;4. Corrección con Gemini (Whisper-LM)&lt;/h3&gt;
&lt;p&gt;Cada transcripción normalizada se envía a &lt;strong&gt;Gemini 2.0 Flash&lt;/strong&gt; con un prompt que incluye hasta 500 palabras del léxico maya como referencia ortográfica. Las instrucciones clave del prompt son: corregir respetando la gramática y ortografía estándar del maya yucateco, &lt;strong&gt;no traducir al español&lt;/strong&gt;, elegir la opción más probable según el léxico y devolver únicamente el texto corregido.&lt;/p&gt;
&lt;h3 id="5-evaluación"&gt;5. Evaluación&lt;/h3&gt;
&lt;p&gt;Se calcula la tasa de error por carácter (CER) y por palabra (WER) con &lt;code&gt;editdistance&lt;/code&gt;, comparando contra la transcripción humana de referencia:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Métrica&lt;/th&gt;
&lt;th&gt;Whisper turbo&lt;/th&gt;
&lt;th&gt;Whisper-LM (este pipeline)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CER medio&lt;/td&gt;
&lt;td&gt;1.0743&lt;/td&gt;
&lt;td&gt;1.0725&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WER medio&lt;/td&gt;
&lt;td&gt;1.1796&lt;/td&gt;
&lt;td&gt;1.1692&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="qué-aprendimos"&gt;¿Qué aprendimos?&lt;/h2&gt;
&lt;p&gt;La mejora es &lt;strong&gt;marginal&lt;/strong&gt;: el posprocesamiento con LLM y léxico recupera algo de forma ortográfica, pero no puede reconstruir información que el modelo acústico nunca capturó. Con valores de CER/WER superiores a 1.0, la salida de Whisper está tan alejada de la referencia que la corrección textual tiene poco material con el que trabajar. La conclusión práctica es que, para el maya yucateco, &lt;strong&gt;el cuello de botella está en el modelo acústico&lt;/strong&gt;: se necesita ajuste fino (&lt;em&gt;fine-tuning&lt;/em&gt;) de Whisper con datos de habla maya, y no solo corrección posterior.&lt;/p&gt;
&lt;h2 id="próximos-pasos"&gt;Próximos pasos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ajuste fino de Whisper con audio transcrito en maya yucateco.&lt;/li&gt;
&lt;li&gt;Ampliar las reglas ortográficas (&lt;code&gt;ORTHO_RULES&lt;/code&gt;) con los errores recurrentes observados en las transcripciones.&lt;/li&gt;
&lt;li&gt;Ampliar el léxico y experimentar con recuperación selectiva (enviar al prompt solo las entradas relevantes para cada segmento, en lugar de una lista fija).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="acceso-al-cuaderno"&gt;Acceso al cuaderno&lt;/h2&gt;
&lt;p&gt;Si te interesa el cuaderno de Colab, puedes ponerte en contacto con el autor en &lt;a href="mailto:jaziel.carballo@gmail.com"&gt;jaziel.carballo@gmail.com&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Whisper-LM with a Maya Lexicon: Correcting Yucatec Maya ASR Transcriptions Using Gemini and a Dictionary as Reference</title><link>https://giltia.github.io/publication/whisper-lm-yua-lexicon-rag/</link><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid>https://giltia.github.io/publication/whisper-lm-yua-lexicon-rag/</guid><description>&lt;h2 id="what-problem-does-this-notebook-address"&gt;What problem does this notebook address?&lt;/h2&gt;
&lt;p&gt;Whisper, OpenAI&amp;rsquo;s automatic speech recognition (ASR) system, does not include Yucatec Maya among its supported languages. When transcribing Maya audio, the model produces very noisy output and frequently &amp;ldquo;detects&amp;rdquo; the wrong language: in our data, Maya segments were labeled as Spanish, English, and even Japanese. This notebook explores a practical question: &lt;strong&gt;how much can a large language model (LLM) improve Whisper&amp;rsquo;s output if we give it a Maya lexicon as reference?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="pipeline-architecture"&gt;Pipeline architecture&lt;/h2&gt;
&lt;p&gt;The full flow is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Audio → Whisper (turbo) → Rule-based normalizer → Gemini + lexicon → Normalizer → Evaluation (CER/WER)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="1-input-data"&gt;1. Input data&lt;/h3&gt;
&lt;p&gt;The starting point is a CSV file (&lt;code&gt;transcription_results41Turbo.csv&lt;/code&gt;) with 1,010 audio segments already transcribed by Whisper turbo. Each row includes the human reference transcription (&lt;code&gt;original_transcription&lt;/code&gt;), Whisper&amp;rsquo;s prediction (&lt;code&gt;whisper_prediction&lt;/code&gt;), the detected language, and initial metrics (chrF, WER, CER).&lt;/p&gt;
&lt;h3 id="2-maya-lexicon-as-reference-rag-component"&gt;2. Maya lexicon as reference (RAG component)&lt;/h3&gt;
&lt;p&gt;A Maya–Spanish dictionary in TSV format (&lt;code&gt;yua_dictionary.tsv&lt;/code&gt;) with &lt;strong&gt;2,988 entries&lt;/strong&gt; is loaded. A &lt;code&gt;YuaLexicon&lt;/code&gt; class provides exact lookup and fuzzy matching (via &lt;code&gt;difflib.get_close_matches&lt;/code&gt;), making it possible to find the closest valid Maya word for a mis-transcribed token.&lt;/p&gt;
&lt;h3 id="3-rule-based-orthographic-normalizer"&gt;3. Rule-based orthographic normalizer&lt;/h3&gt;
&lt;p&gt;Before and after the LLM pass, the text is normalized with Yucatec Maya linguistic rules taken from a reference grammar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Root morphology rules&lt;/strong&gt;: for example, &lt;em&gt;bin&lt;/em&gt; (to go) with the irregular root &lt;em&gt;xi&amp;rsquo;&lt;/em&gt; in the intransitive indefinite future, or positionals such as &lt;em&gt;chil&lt;/em&gt;, &lt;em&gt;kul&lt;/em&gt;, and &lt;em&gt;wa&amp;rsquo;al&lt;/em&gt; that lose the &lt;em&gt;l&lt;/em&gt; before &lt;em&gt;-tal&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Safe&amp;rdquo; regex patterns&lt;/strong&gt;: &lt;em&gt;bins&lt;/em&gt; → &lt;em&gt;bis&lt;/em&gt;, &lt;em&gt;taals&lt;/em&gt; → &lt;em&gt;taas&lt;/em&gt;, and verbs whose final &lt;em&gt;b&lt;/em&gt; changes to a glottalized structure (&lt;em&gt;jáalk&amp;rsquo;ab&lt;/em&gt; → &lt;em&gt;jáalk&amp;rsquo;a&amp;rsquo;a&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lexicon verification&lt;/strong&gt;: if the normalized form exists in the dictionary it is kept; if the original form was already valid, it is preserved.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-correction-with-gemini-whisper-lm"&gt;4. Correction with Gemini (Whisper-LM)&lt;/h3&gt;
&lt;p&gt;Each normalized transcription is sent to &lt;strong&gt;Gemini 2.0 Flash&lt;/strong&gt; with a prompt that includes up to 500 words from the Maya lexicon as an orthographic reference. The key prompt instructions are: correct the text following standard Yucatec Maya grammar and orthography, &lt;strong&gt;do not translate into Spanish&lt;/strong&gt;, choose the most likely option according to the lexicon, and return only the corrected text.&lt;/p&gt;
&lt;h3 id="5-evaluation"&gt;5. Evaluation&lt;/h3&gt;
&lt;p&gt;Character error rate (CER) and word error rate (WER) are computed with &lt;code&gt;editdistance&lt;/code&gt; against the human reference transcription:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Whisper turbo&lt;/th&gt;
&lt;th&gt;Whisper-LM (this pipeline)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mean CER&lt;/td&gt;
&lt;td&gt;1.0743&lt;/td&gt;
&lt;td&gt;1.0725&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean WER&lt;/td&gt;
&lt;td&gt;1.1796&lt;/td&gt;
&lt;td&gt;1.1692&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="what-did-we-learn"&gt;What did we learn?&lt;/h2&gt;
&lt;p&gt;The improvement is &lt;strong&gt;marginal&lt;/strong&gt;: LLM post-processing with a lexicon recovers some orthographic form, but it cannot reconstruct information the acoustic model never captured. With CER/WER values above 1.0, Whisper&amp;rsquo;s output is so far from the reference that text-level correction has little material to work with. The practical takeaway is that, for Yucatec Maya, &lt;strong&gt;the bottleneck is the acoustic model&lt;/strong&gt;: what is needed is fine-tuning Whisper on Maya speech data, not just downstream correction.&lt;/p&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fine-tune Whisper with transcribed Yucatec Maya audio.&lt;/li&gt;
&lt;li&gt;Extend the orthographic rules (&lt;code&gt;ORTHO_RULES&lt;/code&gt;) with recurrent errors observed in the transcriptions.&lt;/li&gt;
&lt;li&gt;Grow the lexicon and experiment with selective retrieval (sending only the entries relevant to each segment to the prompt, instead of a fixed list).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="access-to-the-notebook"&gt;Access to the notebook&lt;/h2&gt;
&lt;p&gt;If you are interested in the Colab notebook, you can contact the author at &lt;a href="mailto:jaziel.carballo@gmail.com"&gt;jaziel.carballo@gmail.com&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>