¿Cómo hacer una grabadora de sonido ESP32?

¿Cómo hacer una grabadora de sonido ESP32?

marzo 26, 2021

Cómo hacer una grabadora de sonido ESP32
En este proyecto, haremos una grabadora de sonido ESP32 simple, con entrada de sonido y salida de audio. Utilizaremos el MakePyhton ESP32 y el sombrero de interacción de voz.

Hice un reproductor de música para ESP32 en el pasado, y muchas personas están muy interesadas en él. Pero tiene un problema que solo puede reproducir audio en formato MP3. WAV es uno de los formatos de música comunes, que se puede encontrar en la vida diaria. Quiero referirme al reproductor de audio anterior para rehacer uno nuevo.
 
Tengo una idea durante el diseño, me pregunto por qué no agregué un micrófono al reproductor en el que se pueden realizar tanto la entrada de sonido como la salida de audio. Suena como hacer una simple grabadora de voz.

1. ¿Cómo graba ESP32 voz y reproducción?

Cómo hacer ESP32-Grabar-Voz-y-Reproducir
Conecte el chip de codificación de audio al ESP32 para recoger sonidos y reproducir audio. Wm8960 es un CODEC estéreo de baja potencia y alta calidad, que proporciona dos tipos de interfaz: entrada y salida de voz. La comunicación entre ESP32 y WM8960 es I2S. Los micrófonos se han integrado en la placa que diseño para conectarse a la interfaz de entrada. Y la placa proporciona el conector de audio de 3,5 mm como salida del reproductor.

Además, la placa tiene una ranura para tarjeta SD para suministrar la tarjeta SD para guardar la voz grabada. Por lo tanto, el reproductor puede reproducir el archivo de audio almacenado en la tarjeta SD.

El tablero se llama Voice interface Hat, y el diagrama de trabajo del tablero es como la imagen.

2. Listas de materiales

3. ¿Cómo conectar los componentes?

MakePython-ESP32-and-Voice-Interaction-HatMakePython-ESP32-and-Voice-Interaction-Hat-Connected
Conecte dos placas de acuerdo con el pin, use el cable USB para conectarlas para la fuente de alimentación.

4. Software

Lo he programado para grabar y reproducir, y el programa está disponible en Github:
  • Utilice el programa de carga IDE de Arduino.
  • Defina el volumen del reproductor escribiendo un valor en el registro.
bool WM8960_Volume(flotar L_volume, flotar R_volume)
{
  L_volume = L_volume * 0xff;
  WM8960_Write_Reg(LEFT_DAC_VOLUME, (uint8_t)L_volume | 0x0100);
  R_volume = R_volume * 0xff;
  WM8960_Write_Reg(RIGHT_DAC_VOLUME, (uint8_t)R_volume | 0x0100);
  devolver verdadero;
}
  • Grabe algo con el sombrero de la interfaz de voz
void WM8960_Record(Nombre de archivo de cadena, char *buff, int record_time)
{
    int headerSize = 44;
    encabezado de byte[headerSize];
    int waveDataSize = record_time * 16000 * 16 * 2 / 8;
    int recode_time = millis();
    int part_time = recode_time;

Archivo archivo = SD.open(nombre de archivo, FILE_WRITE);
    if (!file)
        devolución;

Serial.println("Comenzar a grabar:");

para (int j = 0; j  1000)
        {
            Serial.print(".");
            part_time = millis();
        }
    }

file.seek(0);
    CreateWavHeader(encabezado, waveDataSize);
    file.write(header, headerSize);

Serial.println("");
    Serial.println("Finalizar");
    Serial.println(millis() - recode_time);
    file.close();
}
  • Reproduzca el audio cuyo formato es WAV.
void WM8960_Play (nombre de archivo de cadena, char *buff)
{
    Archivo archivo = SD.open(nombre de archivo);
    if (! archivo)
        devolución;
    Serial.println("Empezar a reproducir:");
    Serial.println(nombre de archivo);
    archivo.seek(44);
    while (file.readBytes(buff, sizeof(buff)))
    {
        I2S_Write(buff, sizeof(buff));
    }
    Serial.println("Finalizar");
    file.close();
}
  • Configure el SSID wifi y la contraseña para ESP32 para conectar wifi.
const char *ssid = "Makerfabs";
const char *password = "123456789";

5. Cómo utilizar la grabadora de sonidos ESP32

Cómo usar-Paso-1Cómo usar-Paso-2
Cómo usar-Paso-3Cómo usar-Step-4
1. Después de cargar el programa a ESP32, reinicie el ESP32.
2. Suba o baje el botón a la izquierda del tablero para seleccionar el menú, presione para confirmar la selección.
3. Después de ingresar a la función de grabación, debe seguir presionando el botón hasta que finalice la grabación.
4. La función de reproducción puede mostrar dos archivos de grabación, uno es la grabación actual completada y el otro es el último archivo grabado.

6. Resultado

Si la función de comunicación inalámbrica de ESP32 se puede utilizar en la transmisión de voz grabada, se pueden lograr muchos puntos, como el envío de voz de grabación. Eso suena interesante. Intentaré la transmisión de voz en el aire a continuación. Si tiene otras ideas sobre este tablero, por favor déjeme un mensaje.

Si tienes alguna duda o necesidadservicio PCBA personalizado, le invitamos a dejarnos un mensaje aservice@makerfabs.com.guiño

Contáctenos