Para construir un corpus a partir de transcripciones, necesitas tres cosas: textos limpios, reglas de normalización coherentes y metadatos claros. Si defines estos pasos desde el inicio, podrás buscar, filtrar y comparar tus datos sin perder tiempo ni calidad. Esta guía te da un flujo de trabajo práctico, una plantilla de metadatos y criterios para equilibrar “arreglar” el texto sin borrar fenómenos lingüísticos valiosos.
La palabra clave principal aquí es construir un corpus a partir de transcripciones, porque el reto no es solo transcribir, sino convertir ese material en datos reutilizables.
- Key takeaways:
- Define el objetivo del corpus antes de tocar una coma: eso decide qué normalizas y qué conservas.
- Separa limpieza (errores y ruido) de normalización (decisiones editoriales repetibles).
- Usa dos capas cuando puedas: una versión “fiel” y otra “normalizada” para búsqueda y análisis.
- Segmenta con reglas simples (turnos, frases, tiempo) y documenta excepciones.
- Los metadatos deben permitir reproducir, filtrar y evaluar sesgos, sin exponer datos personales.
1) Antes de empezar: define el diseño del corpus (para no rehacerlo)
Un corpus no es “un montón de transcripciones”, sino una colección con criterios consistentes. Si no defines el diseño, tu limpieza y tu normalización chocarán con el uso final.
- Uso principal: lingüística (variación, pragmática), NLP (entrenamiento/evaluación), investigación social, producto (búsqueda interna), accesibilidad.
- Unidad de análisis: palabra, frase, turno, intervención, documento, episodio.
- Tipo de habla: entrevistas, reuniones, podcasts, atención al cliente, clases, focus groups.
- Idioma/variedad: español peninsular, mezcla de idiomas, dialectos, jerga técnica.
- Nivel de fidelidad: literal (con muletillas y repeticiones) vs. “limpio” (sin disfluencias) o doble versión.
Decide también tu política de privacidad: qué se anonimiza, cómo se guarda el audio, y quién accede. Si tu corpus incluye personas identificables, revisa el marco legal aplicable y limita la exposición de datos personales (consulta la información oficial sobre protección de datos en la UE en el sitio de la European Data Protection Board).
2) Limpieza: arregla errores y ruido sin “reescribir” a la gente
La limpieza elimina problemas técnicos o inconsistencias accidentales. No debería cambiar el contenido lingüístico, salvo que corrijas fallos obvios de captura o formato.
Qué suele entrar en “limpieza” (checklist)
- Codificación y caracteres: UTF-8, comillas consistentes, guiones largos/medios, símbolos raros.
- Saltos de línea: un criterio único (por turno de habla, por párrafo, por frase).
- Espacios: dobles espacios, espacios antes de signos, tabulaciones.
- Timestamps: formato uniforme (por ejemplo, HH:MM:SS.mmm) y colocación fija.
- Etiquetas de hablante: misma convención (S1, S2; o nombres anonimizados).
- Marcas no verbales: risas, tos, pausa, solapamiento, en un inventario controlado.
- Corrección de errores evidentes: palabras truncadas por corte, duplicados por pegado, líneas repetidas.
Política mínima para eventos no verbales
Elige un conjunto pequeño y consistente, y úsalo siempre igual. Por ejemplo:
[risa],[tos],[pausa],[inaudible],[solapa].- Si añades duración, que sea opcional pero estandarizada:
[pausa:1.2].
Consejo práctico: si tus transcripciones vienen de varias fuentes, crea un “paso 0” de importación que solo convierta formatos y etiquetas, sin tocar palabras. Eso reduce el caos al mezclar datos.
3) Normalización: reglas claras (y documentadas) para que el corpus sea comparable
La normalización cambia la representación del texto para que sea más consistente y fácil de buscar o modelar. Como sí afecta a la forma lingüística, debes escribir reglas explícitas y guardarlas junto al corpus (un archivo NORMALIZATION.md funciona muy bien).
Reglas de normalización recomendadas (y decisiones que debes tomar)
- Mayúsculas/minúsculas: ¿conservas mayúsculas originales o pasas todo a minúsculas en una capa de análisis?
- Números: “veintidós” vs “22”; decide según tu uso (lectura humana vs modelos).
- Puntuación: ¿la mantienes tal cual, la regularizas o la minimizas?
- Contracciones y elisiones: “pa’”, “tó”, “na” (muy valiosas si estudias oralidad).
- Ortografía y variantes: “solo/sólo”, “guion/guión”, “WhatsApp/wasap”.
- Muletillas y disfluencias: “eh”, “o sea”, repeticiones, cortes (“yo… yo…”).
- Lengua mixta: palabras en inglés, catalán, etc.; decide si marcas el cambio de idioma.
Variantes ortográficas: una estrategia que no destruye datos
Para un corpus, lo más seguro es separar lo que alguien dijo de cómo quieres buscarlo. Dos enfoques comunes:
- Doble capa (recomendado): guardas una versión literal y otra normalizada, alineadas por segmento.
- Una sola capa con anotación: conservas la forma original y añades un campo “forma normalizada” por token o por segmento.
Ejemplo sencillo de regla: si normalizas “pa’” a “para”, documenta si pierdes la marca de elisión o si la guardas en una etiqueta (pa’|para o un campo aparte). No hay una respuesta única: depende del objetivo.
Política de puntuación: decide el “nivel de intervención”
La puntuación en oralidad suele ser interpretativa, así que conviene definir un nivel:
- Nivel A (fiel): puntuación mínima, solo para legibilidad básica; mantienes cortes y repeticiones.
- Nivel B (lectura): añades comas y puntos para ritmo, pero sin reescribir; útil para análisis cualitativo.
- Nivel C (normalizado): regularizas signos, reduces puntos suspensivos, unificas interrogación/exclamación.
Si tu corpus alimenta modelos, a veces conviene simplificar, pero guarda siempre la versión original o trazas de cambios. Para accesibilidad en subtítulos y transcripción, la coherencia importa tanto como la “perfección” (puedes apoyarte en buenas prácticas como las del W3C WCAG cuando el material se publica para usuarios).
4) Segmentación: cómo partir el texto para que sea útil (y reproducible)
Segmentar es decidir dónde empieza y acaba cada unidad del corpus. Si segmentas mal, luego no podrás alinear con audio, comparar hablantes o calcular medidas.
Opciones de segmentación (elige una principal)
- Por documento: una transcripción = un archivo; simple, pero poco granular.
- Por turnos de habla: cada intervención de un hablante es un segmento; ideal para análisis conversacional.
- Por frase/utterance: segmentas por unidades entonativas o por signos de puntuación; útil para NLP.
- Por tiempo: bloques de X segundos (p. ej., 5–15s) con timestamps; bueno para alineación.
Reglas prácticas (que evitan discusiones eternas)
- Turno nuevo cuando cambia el hablante, aunque sea una palabra.
- Segmento máximo (p. ej., 20–30 segundos) para que sea manejable.
- Solapamiento: decide si lo marcas como evento (
[solapa]) o si creas segmentos paralelos. - Inaudible: mantén el segmento con marca, no lo borres; ayuda a saber que falta información.
Si tu corpus se usará para aprendizaje automático, la alineación por tiempo suele facilitar la revisión y la mejora. Si se usará para sociolingüística, los turnos con metadatos de hablante suelen ser la base.
5) Metadatos: el pegamento que convierte texto en corpus (con plantilla)
Sin metadatos, tu corpus no se puede filtrar, ni auditar, ni reproducir. La regla simple: guarda lo mínimo necesario para entender el contexto, y lo suficiente para detectar sesgos de muestra.
Qué metadatos conviene capturar (sin pasarte)
- Proveniencia: fuente, fecha de grabación, tipo de evento, condiciones (presencial/remoto).
- Idioma(s) y variedad: idioma principal, códigos de idioma si hay mezcla.
- Hablantes: IDs anonimizados, rol (entrevistador/participante), y solo atributos permitidos.
- Audio: formato, duración, calidad aproximada (ruido, solapamiento), canal (mono/estéreo).
- Transcripción: guía usada, versión, quién revisó, nivel de fidelidad.
- Normalización: reglas aplicadas, versión del script, fecha de procesado.
- Privacidad: estado de consentimiento, restricciones de uso, nivel de anonimización.
Plantilla de metadatos (lista para copiar)
Puedes guardarla como JSON, YAML o CSV. Aquí va en formato JSON por claridad:
- metadata_template.json
{
"corpus_id": "CORPUS_NAME",
"document_id": "DOC_0001",
"title": "",
"source": {
"collection_method": "interview|meeting|podcast|class|customer_support|other",
"recording_date": "YYYY-MM-DD",
"recording_location": "online|in_person|unknown",
"platform_or_device": "",
"consent_status": "obtained|restricted|unknown",
"usage_restrictions": "internal_only|research_only|public|other"
},
"language": {
"primary": "es-ES",
"additional": [""],
"code_switching": "none|some|frequent"
},
"audio": {
"file_name": "DOC_0001.wav",
"format": "wav|mp3|m4a|other",
"sample_rate_hz": null,
"channels": "mono|stereo|multichannel|unknown",
"duration_seconds": null,
"quality_notes": ["background_noise", "overlap", "low_volume"]
},
"speakers": [
{
"speaker_id": "S1",
"role": "interviewer|participant|agent|customer|teacher|student|other",
"anonymization": "pseudonymized|fully_anonymized|not_anonymized",
"notes": ""
}
],
"transcript": {
"transcript_file": "DOC_0001.txt",
"has_timestamps": true,
"timestamp_format": "HH:MM:SS.mmm",
"speaker_label_format": "S1:, S2:...",
"transcription_style": "verbatim|clean_read|mixed",
"non_speech_tags": ["[risa]", "[pausa]", "[inaudible]"],
"revision_status": "raw|reviewed|proofread",
"version": "v1.0"
},
"processing": {
"cleaning_done": true,
"normalization_profile": "norm_v1",
"normalization_rules_doc": "NORMALIZATION.md",
"segmentation_unit": "turn|utterance|time_block|document",
"segmentation_notes": "",
"processing_date": "YYYY-MM-DD"
}
}
Cómo usar la plantilla sin crear un monstruo
- Obligatorios: document_id, idioma, fecha (aunque sea aproximada), fuente, estado de consentimiento, estilo de transcripción.
- Recomendados: duración, notas de calidad, política de normalización, unidad de segmentación.
- Opcionales: detalles técnicos finos (sample rate) si no aportan al análisis.
Si vas a compartir el corpus, separa metadatos en dos ficheros: uno público (sin datos sensibles) y otro restringido. Así reduces riesgos sin perder trazabilidad.
6) Equilibrio clave: normalizar sin borrar fenómenos lingüísticos
La tentación típica es “arreglar” todo para que parezca texto escrito. Eso puede destruir justo lo que hace valioso un corpus oral: variación, hesitación, muletillas, cambios de registro y de idioma.
Cuándo conviene conservar la forma original
- Estudias oralidad (disfluencias, repetición, pausas, risas).
- Analizas variación (dialectos, jerga, sociolectos) o identidad.
- Te importa la pragmática (interrupciones, solapamientos, énfasis).
Cuándo conviene normalizar más
- Necesitas búsqueda fiable (por ejemplo, encontrar todas las menciones a un producto).
- Vas a entrenar un sistema que sufre con ruido ortográfico o variantes inconsistentes.
- Tu análisis depende de conteos (frecuencias, n-gramas) y quieres comparabilidad.
Solución práctica: dos versiones alineadas
Si puedes, guarda:
- Texto literal: lo más cercano al audio (con marcas acordadas).
- Texto normalizado: aplicado con reglas versionadas y repetibles.
Luego alinea por segment_id y, si te hace falta, por token. Esto te permite buscar en lo normalizado y, a la vez, volver a lo literal para análisis lingüístico.
7) Flujo de trabajo recomendado (paso a paso) y errores típicos
Este flujo te ayuda a construir un corpus sin perder control de versiones ni coherencia.
Proceso sugerido
- Paso 1: define el objetivo y escribe una guía corta (qué sí/qué no).
- Paso 2: unifica el formato de entrada (importación) y guarda el original intacto.
- Paso 3: aplica limpieza técnica (caracteres, etiquetas, espacios, timestamps).
- Paso 4: segmenta con reglas simples y asigna IDs estables (doc_id, segment_id, speaker_id).
- Paso 5: crea metadatos con la plantilla y valida campos obligatorios.
- Paso 6: aplica normalización con un perfil versionado (norm_v1, norm_v2).
- Paso 7: muestrea y revisa calidad: busca incoherencias (etiquetas, idioma, signos).
Errores comunes (y cómo evitarlos)
- Mezclar limpieza y normalización: separa scripts y guarda un “changelog” de cambios.
- No versionar reglas: si cambias una regla, tu corpus deja de ser comparable.
- Borrar lo difícil (inaudible/solape): marca la incertidumbre, no la escondas.
- IDs inestables: no uses nombres de archivo que cambian; usa IDs internos.
- Metadatos pobres: luego no podrás filtrar por tipo de evento o calidad de audio.
- Privacidad improvisada: define anonimización y permisos antes de distribuir datos.
Si trabajas con grandes volúmenes, puedes combinar transcripción automática y revisión humana. Para ese caso, te puede interesar empezar por transcripción automática y luego pasar por un control de calidad con corrección de transcripciones antes de normalizar.
Common questions
- ¿Qué diferencia hay entre limpieza y normalización?
La limpieza corrige problemas técnicos y de formato (ruido), mientras que la normalización aplica decisiones editoriales repetibles (variantes, puntuación, números) para hacer los textos comparables. - ¿Debería eliminar muletillas y repeticiones?
Solo si tu objetivo lo pide (por ejemplo, una versión “clean read” para lectura). Si haces lingüística o analizas conversación, consérvalas o crea una segunda capa normalizada. - ¿Qué unidad de segmentación es mejor?
Para conversación: turnos de habla. Para NLP: frases/utterances o bloques por tiempo alineados. Lo importante es documentar la regla y aplicarla igual en todo el corpus. - ¿Cómo manejo cambios de idioma dentro de una frase?
Puedes conservar el texto tal cual y añadir un metadato de “code_switching”, o marcar segmentos con idioma dominante. Evita “traducir” dentro del corpus si tu objetivo es lingüístico. - ¿Es mala idea corregir la ortografía?
No es mala idea si lo haces en una capa aparte. Corregir en el único texto puede borrar rasgos de pronunciación o identidad, y luego no podrás recuperarlos. - ¿Qué metadatos son imprescindibles?
ID del documento, fuente/tipo de evento, fecha, idioma, estado de consentimiento/uso y estilo de transcripción. Sin eso, el corpus pierde trazabilidad. - ¿Qué formato de archivo conviene para el corpus?
Para empezar, texto + metadatos en JSON/CSV funciona bien. Si necesitas interoperabilidad lingüística, considera formatos anotados (por ejemplo, ELAN/TEI), pero solo si tu equipo los va a usar.
Si quieres acelerar la fase de obtención de transcripciones y empezar antes con limpieza, normalización y metadatos, GoTranscript puede ayudarte con soluciones de transcripción que se adapten a tu flujo de trabajo. Puedes ver opciones en sus professional transcription services.
