Communitygithub.com

Natiq-studio/voiceover

Crea narraciones en árabe dialectal argelino (Darija) e integra audio de Natiq en proyectos de Remotion, gráficos en movimiento o vídeo con ffmpeg. Úsalo cuando un vídeo necesite voz en off argelina o cuando la narración existente requiera revisión.

¿Qué es voiceover?

Este skill permite agregar voz en off auténtica en árabe dialectal argelino (Darija) a proyectos de vídeo usando la plataforma Natiq. Está diseñado para desarrolladores que trabajan con Remotion, ffmpeg o herramientas de motion graphics. El skill se encarga de descubrir catálogos de voz, gestionar la facturación, enviar trabajos asíncronos y descargar los audios resultantes. Una vez generada la narración, el skill la integra automáticamente en el proyecto, sincronizando la duración de cada escena con la duración real del audio y añadiendo pausas deliberadas. Si el servidor de Natiq no está disponible, el skill explica el problema de conexión en lugar de simular la generación de audio. Además, asegura que la narración sea conversacional y natural, conservando nombres de productos y palabras francesas intencionales. Para transcripciones de alto riesgo o frases dialectales dudosas, solicita una revisión por parte de un hablante nativo. El skill mantiene cada escena como una unidad independiente y editable, y utiliza una sola voz y estilo de entrega a menos que se indique un cambio de personaje. Está pensado para equipos de producción de vídeo que necesitan contenido localizado de alta calidad en árabe argelino.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Natiq-studio/natiq-voiceover/tree/HEAD/skills/voiceover

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Usa las herramientas MCP de Natiq conectadas y sigue las instrucciones del servidor para el descubrimiento del catálogo, facturación, trabajos asíncronos y URLs de descarga. Si el servidor no está disponible, explica el problema de conexión; nunca finjas que se generó el audio.

Mantén la narración en árabe dialectal argelino (Darija) conversacional, con frases habladas cortas. Conserva los nombres de productos y palabras francesas intencionales. Para textos de alto riesgo o frases regionales dudosas, solicita una revisión por parte de un hablante nativo. No afirmes que el Darija es perfecto. Mantén cada escena como una unidad independientemente editable, y mantén una sola voz y estilo de entrega a menos que se indique un cambio de personaje.

Antes de la generación, crea un manifiesto de escenas en el proyecto de vídeo del usuario que contenga: ID de escena, narración, voz, propósito, país, velocidad, ID del trabajo, ruta de audio local y duración medida. Guarda el ID del trabajo tan pronto como se reciba la respuesta de envío. Compara la narración Y la configuración de voz/rendimiento antes de reutilizar el audio. Si solo cambian los visuales, conserva el audio. Si el tiempo de ejecución solicitado es demasiado corto después de la generación, explica la compensación y acorta el guion o extiende la escena; no cortes el discurso en silencio.

Descarga los clips exitosos en public/audio/ para Remotion (o el directorio de activos existente del proyecto). Usa nombres estables como scene-01.wav. Las URLs firmadas son temporales: almacena rutas locales e IDs de trabajo en el manifiesto, no URLs firmadas. No reenvíes la clave de API al host de audio. Ejemplo, sustituyendo la URL devuelta:

mkdir -p public/audio
curl --fail --location --output public/audio/scene-01.wav 'RETURNED_AUDIO_URL'

Usa la velocidad de fotogramas del proyecto existente. Redondea cada escena hacia arriba a fotogramas completos y añade cualquier pausa deliberada por separado. Por ejemplo, con scenes del manifiesto:

import {Html5Audio, Series, staticFile, useVideoConfig} from 'remotion';

export const Narration = ({scenes}) => {
  const {fps} = useVideoConfig();
  return <Series>{scenes.map(scene => (
    <Series.Sequence key={scene.id}
      durationInFrames={Math.ceil(scene.duration_seconds * fps) + scene.pauseFrames}>
      <Html5Audio src={staticFile(scene.audio)} />
      {/* Pon aquí los visuales de la escena, dentro de la misma Sequence. */}
    </Series.Sequence>
  ))}</Series>;
};

Establece la duración de la composición como la suma de esos recuentos exactos de fotogramas. scene.audio es relativo a public/, por ejemplo audio/scene-01.wav. Para ffmpeg, de manera similar, deriva la longitud de cada segmento visual de la duración de audio exitosa y cualquier pausa explícita. Escucha las transiciones y verifica el último fotograma para detectar palabras cortadas.

Natiq no tiene marcas de tiempo por palabra. Prefiere subtítulos a nivel de escena, o etiqueta los tiempos de subtítulos proporcionales como estimados y revísalos manualmente. Usa una herramienta separada de alineación forzada si el usuario necesita un resaltado preciso de palabras. Genera una vista previa, comprueba la forma árabe/texto RTL, el balance voz/música, el ritmo y la pronunciación, luego renderiza la salida solicitada. Consulta el ejemplo del README para una composición y comando de renderizado mínimo de Remotion.

Skills relacionados