¿Alguien conoce una biblioteca (preferiblemente C# .Net) que me permita ubicar, en grabaciones de voz, los segmentos en los que una persona específica está hablando?¿Identifica segmentos cuando una persona está hablando?
Respuesta
Es posible con el kit de herramientas de gritar: http://shout-toolkit.sourceforge.net/index.html
Está escrito en C++ y se prueba para Linux, sino que también debe funcionar bajo Windows o OSX.
El kit de herramientas fue un subproducto de mi investigación de doctorado sobre reconocimiento automático de voz (ASR). Usarlo para ASR en sí mismo quizás no sea tan sencillo, pero para la Detección de la Actividad del Habla (SAD) y la diarización (encontrar todo el habla de una persona específica) es bastante fácil de usar. Aquí está un ejemplo:
Crear un archivo de audio PCM sin cabeceras de 16 KHz, 16 bits, ascendente hacia la izquierda, mono. Uso ffmpeg para crear los archivos sin procesar: ffmpeg -i [INPUT_FILE] -vn -acodec pcm_s16le -ar 16000 -ac 1 -f s16le [RAW_FILE] Prefijo los datos sin encabezado con el tamaño de archivo codificado endian (4 bytes). Asegúrese de que el archivo tenga la extensión .raw, ya que shout_cluster detecta el tipo de archivo según la extensión.
Realizar la segmentación de voz/no-voz: ./shout_segment -a [RAW_FILE] -AMS [SHOUT_SAD_MODEL] -mo [SAD_OUTPUT] El archivo de salida le proporcionará segmentos en los que alguien está hablando (etiquetadas con "SPEECH". Por supuesto, porque todo se hace automáticamente, el sistema puede cometer errores ...), en el que hay un sonido que no es el habla ("SOUND") o el silencio ("SILENCE").
Realizar diarización: ./shout_cluster -a [RAW_FILE] -mo [DIARIZATION_OUTPUT] -mi [SAD_OUTPUT] Uso de la salida de la shout_segment, se tratará de determinar el número de hablantes eran activos en la grabación , etiquete cada altavoz ("SPK01", "SPK02", etc.) y luego encuentre todos los segmentos de voz de cada uno de los altavoces.
Espero que esto ayude!
Si bien la respuesta anterior es precisa, tengo una actualización del problema de instalación que se produjo en Linux al instalar SHoUT. undefined reference to pthread_join
cuya solución que encontré fue a abrir configure-make.sh de zip de instalación gritar y modificar la línea
CXXFLAGS="-O3 -funroll-loops -mfpmath=sse -msse -msse2" LDFLAGS="-lpthread" ../configure
a
CXXFLAGS="-O3 -funroll-loops -mfpmath=sse -msse -msse2" LDFLAGS="-pthread" ../configure
NOTA la -lpthread a cambiado a pthread en sistemas Linux.
SO: Linux Mint 18 donde versión gritar: liberar-2010-versión-0-3
¡Gracias por su respuesta, hombre! ¿Finalmente lograste reconocer algo con éxito? – Roman
Con SHoUT: no, cambié a Python ya que tenía un mejor soporte para el análisis de audio. –
- 1. Hablando con una impresora
- 2. Emacs hablando con XCode
- 3. ¿Está normalizando el nombre de una persona ir demasiado lejos?
- 4. ¿Identifica si un punto está dentro de un polígono?
- 5. ¿Cómo averiguar whitePixelValue cuando la persona sonríe?
- 6. Hablando con Arduino desde Scala
- 7. fgetc no identifica EOF
- 8. Hablando con un escáner de una secuencia de comandos PHP
- 9. biblioteca que identifica imágenes similares
- 10. Superación "Está siendo utilizado por otra persona o programa".
- 11. iOS: analizar una dirección URL en segmentos
- 12. cómo crear una lista de categorías/segmentos?
- 13. "Teach" Python otros idiomas (TTS hablando ...) ¿Cómo?
- 14. ¿Cómo se identifica * qué * dispositivo bluetooth provoca una transmisión ACTION_ACL_CONNECTED?
- 15. Pantalla de 7 segmentos OCR
- 16. ¿Puede una persona adoptar técnicas ágiles?
- 17. ¿Cómo identifica los patrones de diseño monádico?
- 18. no hay segmentos * archivo encontrado
- 19. Canvas.drawLines que muestran segmentos inconexos
- 20. Merge 2d segmentos de línea
- 21. especificación persona pasa cuando se ejecuta solo, pero falla cuando se ejecute todas las características
- 22. reducción segmentada con segmentos dispersos
- 23. ¿Cómo se identifica una palabra o una selección en todo el documento?
- 24. Cualquier persona usando Qi4J
- 25. ¿Cómo identifica el campo que está causando que la serialización binaria falle en .NET?
- 26. Conectar dos segmentos de línea
- 27. Cuando cambio un parámetro dentro de una función, ¿cambia para la persona que llama también?
- 28. Solicitar las funciones de un usuario en AD cuando la persona que llama no está en el dominio
- 29. Hablando con marco flotante de código ASP.NET detrás
- 30. Extracción de segmentos de línea de una transformada de bastidor
Gracias por su respuesta, Marijn, y por su perfil de pasos! ¿Es este idioma independiente, es decir, puede funcionar en hebreo, japonés, etc.?(sorprendentemente, estos "probablemente elegidos para este ejemplo porque son idiomas tan exóticos" son exactamente los idiomas necesarios :) – Avi
Acabo de utilizar estos comandos y el terminal simplemente se ha congelado en un segundo comando. Ubuntu 17.10. Tal vez sea porque no hice nada con respecto a esta instrucción: "Prefique los datos sin encabezado con el tamaño de archivo codificado en el pequeño endian (4 bytes)". ¿Es este el caso? ¿Cómo puedo hacer eso? – Roman