Lyria RealTime 음악 생성은 WebSockets를 사용하여 영구적인 양방향 저지연 스트리밍 연결을 사용합니다. 이 섹션에서는 WebSockets API에 관한 추가 세부정보를 확인할 수 있습니다.
세션
WebSocket 연결은 모델과의 실시간 통신을 유지하기 위한 세션을 설정합니다. 클라이언트가 새 연결을 시작한 후 세션에서 서버와 메시지를 교환하여 다음 작업을 실행할 수 있습니다.
- 음악 생성을 유도하는 프롬프트와 컨트롤을 전송합니다.
- 음악 재생 컨트롤을 전송합니다.
- 오디오 청크를 수신합니다.
WebSocket 연결
세션을 시작하려면 다음 WebSocket 엔드포인트에 연결하세요.
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic
세션 구성
연결 후의 초기 메시지는 세션 중에 사용할 모델을 설정합니다.
다음 구성 예시를 참고하세요. SDK의 이름 대소문자는 다를 수 있습니다. Python SDK 구성 옵션은 여기에서 확인할 수 있습니다.
{
"model": string
}
메시지 보내기
WebSocket 연결을 통해 메시지를 교환하려면 클라이언트가 열린 WebSocket 연결을 통해 JSON 객체를 전송해야 합니다. JSON 객체는 다음 객체 세트의 필드 중 정확히 하나를 포함해야 합니다.
{
"setup": BidiGenerateMusicSetup,
"client_content": BidiGenerateMusicClientContent,
"music_generation_config": BidiGenerateMusicGenerationConfig,
"playback_control": BidiGenerateMusicPlaybackControl
}
지원되는 클라이언트 메시지
지원되는 클라이언트 메시지는 다음 표를 참조하세요.
메시지 | 설명 |
---|---|
BidiGenerateMusicSetup
|
첫 번째 메시지에서만 전송되는 세션 구성 |
BidiGenerateMusicClientContent |
가중치가 적용된 프롬프트를 모델 입력으로 사용 |
BidiGenerateMusicGenerationConfig |
음악 생성 구성 |
BidiGenerateMusicPlaybackControl
|
모델 생성을 위한 재생 제어 신호 |
메시지 수신
서버에서 메시지를 수신하려면 WebSocket 'message' 이벤트를 수신한 다음 지원되는 서버 메시지의 정의에 따라 결과를 파싱합니다.
다음을 참조하세요.
async def receive_audio(session):
"""Example background task to process incoming audio."""
while True:
async for message in session.receive():
audio_data = message.server_content.audio_chunks[0].data
# Process audio...
await asyncio.sleep(10**-12)
async with (
client.aio.live.music.connect(model='models/lyria-realtime-exp') as session,
asyncio.TaskGroup() as tg,
):
# Set up task to receive server messages.
tg.create_task(receive_audio(session))
# Send initial prompts and config
await session.set_weighted_prompts(
prompts=[
types.WeightedPrompt(text='minimal techno', weight=1.0),
]
)
await session.set_music_generation_config(
config=types.LiveMusicGenerationConfig(bpm=90, temperature=1.0)
)
# Start streaming music
await session.play()
서버 메시지에는 BidiGenerateMusicServerMessage
메시지의 다른 필드 중 정확히 하나가 포함됩니다.
(messageType
결합은 JSON으로 표현되지 않으므로 필드가 메시지의 최상위 수준에 표시됩니다.)
메시지 및 이벤트
AudioChunk
오디오 청크의 표현입니다.
필드 | |
---|---|
통합 필드
|
|
data |
오디오 청크의 원시 바이트입니다. |
mimeType |
오디오 청크의 콘텐츠 MIME 유형입니다(예: 'audio/wav'). |
sourceMetadata |
출력 전용입니다. 이 오디오 청크를 생성하는 데 사용된 프롬프트와 구성입니다. |
SourceMetadata
이 오디오 청크를 생성하는 데 사용된 입력 소스에 관한 메타데이터입니다.
필드 | |
---|---|
clientContent |
이 오디오 청크를 생성하기 위한 가중치가 적용된 프롬프트입니다. |
musicGenerationConfig |
이 오디오 청크를 생성하기 위한 음악 생성 구성입니다. |
BidiGenerateMusicClientContent
음악을 시작하거나 조작하기 위한 사용자 입력
필드 | |
---|---|
weightedPrompts[] |
필수입니다. 가중치가 적용된 프롬프트를 모델 입력으로 사용합니다. |
BidiGenerateMusicClientMessage
BidiGenerateMusic 호출에서 클라이언트가 전송한 메시지입니다.
필드 | |
---|---|
통합 필드
|
|
setup |
선택사항입니다. 세션 구성은 첫 번째 클라이언트 메시지에서만 전송됩니다. |
clientContent |
선택사항입니다. 가중치가 적용된 프롬프트와 음악 생성 구성을 음악 생성의 입력으로 사용합니다. |
musicGenerationConfig |
선택사항입니다. 음악 생성 구성입니다. |
playbackControl |
선택사항입니다. 음악 생성을 위한 재생 제어 신호입니다. |
BidiGenerateMusicFilteredPrompt
이유가 포함된 필터링된 프롬프트입니다.
필드 | |
---|---|
filteredReason |
출력 전용입니다. 프롬프트가 필터링된 이유입니다. |
통합 필드 prompt . 필터링된 프롬프트입니다. prompt 은 다음 중 하나여야 합니다.
|
|
text |
선택사항입니다. 텍스트 프롬프트 |
BidiGenerateMusicGenerationConfig
음악 생성 구성입니다.
필드 | |
---|---|
temperature |
선택사항입니다. 오디오 생성의 분산을 제어합니다. 값이 클수록 분산이 커집니다. 범위는 [0.0, 3.0]입니다. 기본값은 1.1입니다. |
topK |
선택사항입니다. 모델이 출력용 토큰을 선택하는 방식을 제어합니다. 확률이 가장 높은 topK 토큰을 샘플링합니다. 범위는 [1, 1000]입니다. 기본값은 40입니다. |
seed |
선택사항입니다. 오디오 생성을 시드합니다. 설정하지 않으면 요청에서 무작위로 생성된 시드를 사용합니다. |
guidance |
선택사항입니다. 모델이 프롬프트를 얼마나 엄격하게 따르는지 제어합니다. 안내를 더 잘 따르지만 전환이 더 갑작스러워집니다. 범위는 [0.0, 6.0]입니다. 기본값은 4.0입니다. |
bpm |
선택사항입니다. 분당 심박수입니다. 범위는 [60, 200]입니다. |
density |
선택사항입니다. 소리의 밀도입니다. 범위는 [0.0, 1.0]입니다. |
brightness |
선택사항입니다. 값이 높을수록 오디오가 더 밝아집니다. 범위는 [0.0, 1.0]입니다. |
scale |
선택사항입니다. 생성된 음악의 스케일입니다. |
muteBass |
선택사항입니다. 오디오 출력에 베이스가 포함되어서는 안 됩니다. |
muteDrums |
선택사항입니다. 오디오 출력에 드럼이 포함되어서는 안 됩니다. |
onlyBassAndDrums |
선택사항입니다. 오디오 출력에는 베이스와 드럼만 포함되어야 합니다. |
musicGenerationMode |
선택사항입니다. 음악 생성 모드입니다. 기본값은 QUALITY입니다. |
MusicGenerationMode
열거형 | |
---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
이 값은 사용되지 않습니다. |
QUALITY |
이 모드는 텍스트 프롬프트를 고품질 음악이 있는 잠재 공간 영역으로 안내합니다. |
DIVERSITY |
이 모드는 텍스트 프롬프트를 음악의 다양성이 더 큰 잠재 공간 영역으로 안내합니다. |
VOCALIZATION |
이 모드는 텍스트 프롬프트를 보컬 음악을 생성할 가능성이 더 높은 잠재 공간 영역으로 안내합니다. |
확장
생성된 음악의 스케일입니다.
열거형 | |
---|---|
SCALE_UNSPECIFIED |
기본값 이 값은 사용되지 않습니다. |
C_MAJOR_A_MINOR |
C장조 또는 A단조 |
D_FLAT_MAJOR_B_FLAT_MINOR |
D 플랫 장조 또는 B 플랫 단조 |
D_MAJOR_B_MINOR |
D장조 또는 B단조 |
E_FLAT_MAJOR_C_MINOR |
E 플랫 장조 또는 C 단조 |
E_MAJOR_D_FLAT_MINOR |
E장조 또는 D플랫 단조 |
F_MAJOR_D_MINOR |
F장조 또는 D단조 |
G_FLAT_MAJOR_E_FLAT_MINOR |
G 플랫 장조 또는 E 플랫 단조 |
G_MAJOR_E_MINOR |
G장조 또는 E단조 |
A_FLAT_MAJOR_F_MINOR |
A 플랫 장조 또는 F 단조 |
A_MAJOR_G_FLAT_MINOR |
A장조 또는 G플랫 단조 |
B_FLAT_MAJOR_G_MINOR |
B 플랫 장조 또는 G 단조 |
B_MAJOR_A_FLAT_MINOR |
B장조 또는 A플랫 단조 |
BidiGenerateMusicPlaybackControl
음악 생성의 재생 컨트롤입니다.
열거형 | |
---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
이 값은 사용되지 않습니다. |
PLAY |
음악 생성을 시작합니다. |
PAUSE |
음악 생성을 보류합니다. PLAY를 사용하여 현재 위치에서 다시 시작합니다. |
STOP |
음악 생성을 중지하고 컨텍스트를 재설정합니다 (프롬프트는 유지됨). PLAY를 사용하여 음악 생성을 다시 시작합니다. |
RESET_CONTEXT |
음악 생성을 중지하지 않고 컨텍스트를 재설정합니다 (프롬프트는 유지됨). |
BidiGenerateMusicServerContent
클라이언트 메시지에 대한 응답으로 모델에서 생성된 증분 서버 업데이트입니다.
콘텐츠는 실시간이 아닌 최대한 빨리 생성됩니다. 클라이언트는 버퍼링 및 실시간 재생을 선택할 수 있습니다.
필드 | |
---|---|
audioChunks[] |
출력 전용입니다. 모델이 생성한 오디오 청크입니다. |
BidiGenerateMusicServerMessage
BidiGenerateMusic 호출의 응답 메시지입니다.
필드 | |
---|---|
통합 필드 messageType . 메시지 유형입니다.
messageType 은 다음 중 하나여야 합니다.
|
|
setupComplete |
출력 전용입니다. 설정이 완료되면 클라이언트의 |
serverContent |
출력 전용입니다. 클라이언트 메시지에 대한 응답으로 모델에서 생성된 콘텐츠입니다. |
filteredPrompt |
출력 전용입니다. 이유가 포함된 필터링된 프롬프트입니다. |
warning |
출력 전용입니다. 서버의 경고 메시지입니다. 경고로 인해 스트림이 종료되지는 않습니다. |
BidiGenerateMusicSetup
첫 번째 BidiGenerateMusicClientMessage
에서 전송할 메시지 (첫 번째에서만 전송).
클라이언트는 추가 메시지를 보내기 전에 BidiGenerateMusicSetupComplete
메시지를 기다려야 합니다.
필드 | |
---|---|
model |
필수입니다. 모델의 리소스 이름입니다. 이는 모델에서 사용할 ID로 사용됩니다. 형식: |
BidiGenerateMusicSetupComplete
이 유형에는 필드가 없습니다.
클라이언트의 BidiGenerateMusicSetup
메시지에 대한 응답으로 전송됩니다.
WeightedPrompt
가중치가 적용된 프롬프트를 모델 입력으로 사용합니다.
필드 | |
---|---|
weight |
필수입니다. 프롬프트의 가중치입니다. 가중치는 프롬프트의 상대적 중요도를 제어하는 데 사용됩니다. 가중치가 높을수록 가중치가 낮은 것보다 더 중요합니다. 이 BidiGenerateMusicClientContent에 있는 모든 weighted_prompts의 가중치가 모두 0이어서는 안 됩니다. 이 BidiGenerateMusicClientContent 메시지에 있는 모든 weighted_prompts의 가중치가 정규화됩니다. |
통합 필드
|
|
text |
텍스트 프롬프트 |
유형에 대한 추가 정보
API에서 사용되는 유형에 관한 자세한 내용은 Python SDK를 참고하세요.