연결된 Natiq MCP 도구를 사용하고 서버의 지침을 따라 카탈로그 탐색, 과금, 비동기 작업 및 다운로드 URL을 처리하세요. 서버를 사용할 수 없는 경우 연결 문제를 설명하고 오디오가 생성된 척 하지 마세요.
내레이션은 대화체 알제리 다리자(Algerian Darija)로 유지하고, 짧은 문장을 사용하세요. 제품명과 의도적인 프랑스어 단어는 보존하세요. 중요 사본이나 불확실한 지역 표현이 있는 경우 원어민 검토를 요청하세요. 완벽한 다리자를 주장하지 마세요. 각 장면을 독립적으로 편집 가능하게 유지하고, 캐릭터 변경이 의도되지 않는 한 하나의 음성과 전달 스타일을 유지하세요.
생성 전에 사용자의 비디오 프로젝트에 장면 매니페스트(scene manifest)를 생성하세요. 매니페스트에는 장면 ID, 내레이션, 음성, 목적, 국가, 속도, 작업 ID, 로컬 오디오 경로 및 측정된 길이가 포함되어야 합니다. 제출이 반환되는 즉시 작업 ID를 저장하세요. 오디오를 재사용하기 전에 내레이션과 음성/성능 설정을 비교하세요. 시각적 요소만 변경된 경우 오디오를 유지하세요. 요청된 실행 시간이 생성 후 너무 짧은 경우 트레이드오프를 설명하고 스크립트를 줄이거나 장면을 연장하세요. 음성을 무단으로 자르지 마세요.
성공한 클립은 Remotion의 경우 public/audio/ (또는 프로젝트의 기존 에셋 디렉토리)에 다운로드하세요. scene-01.wav와 같은 안정적인 이름을 사용하세요. 서명된 URL은 일시적이므로 매니페스트에는 서명된 URL 대신 로컬 경로와 작업 ID를 저장하세요. API 키를 오디오 호스트에 전달하지 마세요. 예시 (반환된 URL로 대체):
mkdir -p public/audio
curl --fail --location --output public/audio/scene-01.wav 'RETURNED_AUDIO_URL'
기존 프로젝트의 프레임 레이트를 사용하세요. 각 장면을 전체 프레임으로 올림 처리하고 의도적인 일시 중지는 별도로 추가하세요. 예를 들어, 매니페스트의 scenes를 사용하여:
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)} />
{/* 장면의 시각적 요소를 여기 동일한 Sequence 안에 배치하세요. */}
</Series.Sequence>
))}</Series>;
};
컴포지션 지속 시간은 해당 정확한 프레임 수의 합계로 설정하세요. scene.audio는 public/에 상대적입니다(예: audio/scene-01.wav). ffmpeg의 경우에도 마찬가지로 각 시각적 세그먼트의 길이를 성공적인 오디오 길이와 명시적 일시 중지에서 파생하세요. 전환을 듣고 마지막 프레임에서 단어가 잘리지 않는지 확인하세요.
Natiq에는 단어 타임스탬프가 없습니다. 장면 레벨 자막을 선호하거나, 비례 자막 타이밍을 추정으로 표시하고 수동으로 검토하세요. 사용자가 정확한 단어 하이라이팅이 필요한 경우 별도의 강제 정렬 도구(forced alignment tool)를 사용하세요. 미리보기를 렌더링하고 아랍어 조형/RTL 텍스트, 음성/음악 밸런스, 페이싱 및 발음을 확인한 후 요청된 출력을 렌더링하세요. 최소 Remotion 컴포지션 및 렌더 명령에 대해서는 README 예제를 참조하세요.