
Proyecto Rachael Tatman — Sesión 1: presentación y carga de datos
Todos los proyectos de audio que habéis hecho hasta ahora (Laennec, Katy Payne) tenían un problema en común: el desequilibrio de clases. Este proyecto cierra ese hilo con un giro: aquí el dataset SÍ está bien construido, bien equilibrado, y el modelo va a funcionar de maravilla. La pregunta interesante no es “¿por qué falla?”, sino “¿por qué los sistemas reales de voz de la vida real no se construyen así, y qué pasa cuando no lo hacen?”.
La historia real que motiva este proyecto
En 2016, Rachael Tatman, investigadora de lingüística de la Universidad de Washington, descubrió que el sistema de reconocimiento de voz de Google tenía un 70% más de probabilidades de reconocer correctamente el habla masculina que la femenina. No es un caso aislado: un estudio de 2016 sobre cien notas médicas dictadas por voz en urgencias encontró que el 15% de los errores eran críticos, y que las mujeres “tienen que esforzarse más” para que el sistema las entienda.
La causa no son las voces de las mujeres. Tatman lo demostró: entrenó sus propios clasificadores con habla femenina y funcionaron perfectamente bien. El problema es la brecha de datos: los sistemas comerciales de reconocimiento de voz se entrenan con enormes bases de datos de grabaciones que, históricamente, contienen mucho menos audio femenino. Hoy vamos a construir nuestro propio clasificador de voz —no para reconocer palabras, sino algo más simple: distinguir si una voz es masculina o femenina a partir de sus propiedades acústicas— con un dataset que, para variar, está bien equilibrado desde el principio. Guardad ese detalle para la última sesión.
De dónde vienen los datos
Vamos a usar “Gender Recognition by Voice”, un dataset publicado en Kaggle por Kory Becker, con licencia CC BY-NC-SA 4.0 (uso no comercial). A diferencia de Laennec y Katy Payne, aquí no vamos a procesar audio en bruto con librosa: el propio dataset ya trae las propiedades acústicas calculadas para cada muestra, extraídas en R con los paquetes seewave y tuneR sobre el rango de frecuencias 0-280Hz (el rango de la voz humana).
- 3.168 muestras de voz reales, ya balanceadas: la mitad masculinas, la mitad femeninas.
- 20 propiedades acústicas por muestra —entre ellas
meanfreq(frecuencia media),sd(desviación típica de la frecuencia) y, la más importante como veremos en la Sesión 2,meanfun(la frecuencia fundamental media, relacionada con el tono de la voz)— más la columnalabel(maleofemale). - No hay archivos de audio que escuchar esta vez —solo la tabla de propiedades ya calculadas—, así que esta sesión va a ser más corta que la Sesión 1 de Laennec o Katy Payne.
Cómo preparar todo
- Entra en
kaggle.com/datasets/primaryobjects/voicegendercon tu cuenta de Kaggle y descarga el dataset. - Guarda el archivo
voice.csvdentro de una carpeta llamadatatman, al mismo nivel que vuestro cuaderno (ajustad el nombre de la carpeta en el código si la llamáis de otra forma).
Cargando los datos
import pandas as pd
carpeta_datos = "tatman/"
datos = pd.read_csv(carpeta_datos + "voice.csv")
datos.shape
datos.head()

[COMPLETAR CON VUESTROS DATOS REALES: forma de la tabla (filas, columnas)]
datos["label"].value_counts()
[COMPLETAR CON VUESTROS DATOS REALES: cuántas voces masculinas y femeninas hay en el dataset]
[COMPLETAR EN CLASE: comparad este reparto con el de Laennec (normal=320, murmullo=95, extrasistole=46) o con el de Katy Payne (gato=164, perro=113). ¿Qué es distinto aquí?]
Próximo paso
Con los datos cargados, en la próxima sesión vamos a mirar si, con una sola propiedad acústica, ya se puede adivinar el sexo de una voz a simple vista —antes de entrenar ningún modelo.



