Live Music API - WebSockets API reference

Tính năng tạo nhạc theo thời gian thực của Lyria sử dụng một kết nối truyền trực tuyến hai chiều, liên tục và có độ trễ thấp bằng WebSockets. Trong phần này, bạn sẽ tìm thấy thông tin chi tiết bổ sung về API WebSockets.

Phiên

Kết nối WebSocket thiết lập một phiên để duy trì giao tiếp theo thời gian thực với mô hình. Sau khi một máy khách bắt đầu một kết nối mới, phiên có thể trao đổi thông báo với máy chủ để:

  • Gửi câu lệnh và chế độ kiểm soát để định hướng quá trình tạo nhạc.
  • Gửi các nút điều khiển chế độ phát nhạc.
  • Nhận các đoạn âm thanh.

Kết nối WebSocket

Để bắt đầu một phiên, hãy kết nối với điểm cuối websocket này:

wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic

Cấu hình phiên

Thông báo ban đầu sau khi kết nối sẽ đặt mô hình để sử dụng trong phiên.

Hãy xem cấu hình ví dụ sau đây. Xin lưu ý rằng cách viết hoa tên trong SDK có thể khác nhau. Bạn có thể tra cứu các lựa chọn cấu hình Python SDK tại đây.


{
  "model": string
}

Gửi tin nhắn

Để trao đổi thông báo qua kết nối WebSocket, máy khách phải gửi một đối tượng JSON qua kết nối WebSocket đang mở. Đối tượng JSON phải có chính xác một trong số các trường của tập hợp đối tượng sau:


{
  "setup": BidiGenerateMusicSetup,
  "client_content": BidiGenerateMusicClientContent,
  "music_generation_config": BidiGenerateMusicGenerationConfig,
  "playback_control": BidiGenerateMusicPlaybackControl
}

Tin nhắn được hỗ trợ của khách hàng

Hãy xem các thông báo được hỗ trợ của ứng dụng trong bảng sau:

Thông điệp Mô tả
BidiGenerateMusicSetup Cấu hình phiên chỉ được gửi trong thông báo đầu tiên
BidiGenerateMusicClientContent Lời nhắc có trọng số làm dữ liệu đầu vào cho mô hình
BidiGenerateMusicGenerationConfig Cấu hình để tạo nhạc
BidiGenerateMusicPlaybackControl Tín hiệu điều khiển chế độ phát để tạo mô hình

Nhận tin nhắn

Để nhận thông báo từ máy chủ, hãy theo dõi sự kiện "message" của WebSocket, sau đó phân tích kết quả theo định nghĩa về các thông báo được máy chủ hỗ trợ.

Xem các mục sau đây:

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()

Thông báo của máy chủ bao gồm chính xác một trong số các trường khác của thông báo BidiGenerateMusicServerMessage. (Liên kết messageType không được biểu thị bằng JSON nên trường này sẽ xuất hiện ở cấp cao nhất của thông báo.)

Tin nhắn và sự kiện

AudioChunk

Hình minh hoạ một đoạn âm thanh.

Trường

Trường nhóm content.

content chỉ có thể là một trong những trạng thái sau:

data

bytes

Các byte thô của đoạn âm thanh.

mimeType

string

Loại MIME của nội dung trong đoạn âm thanh, chẳng hạn như "audio/wav".

sourceMetadata

SourceMetadata

Chỉ có đầu ra. Câu lệnh và cấu hình được dùng để tạo đoạn âm thanh này.

SourceMetadata

Siêu dữ liệu về nguồn đầu vào được dùng để tạo đoạn âm thanh này.

Trường
clientContent

BidiGenerateMusicClientContent

Câu lệnh có trọng số để tạo đoạn âm thanh này.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Cấu hình tạo nhạc để tạo đoạn âm thanh này.

BidiGenerateMusicClientContent

Người dùng nhập để bắt đầu hoặc điều hướng nhạc.

Trường
weightedPrompts[]

WeightedPrompt

Bắt buộc. Câu lệnh có trọng số làm dữ liệu đầu vào cho mô hình.

BidiGenerateMusicClientMessage

Thông báo do ứng dụng gửi trong lệnh gọi BidiGenerateMusic.

Trường

Trường nhóm messageType.

messageType chỉ có thể là một trong những trạng thái sau:

setup

BidiGenerateMusicSetup

Không bắt buộc. Cấu hình phiên chỉ được gửi trong thông báo đầu tiên của ứng dụng.

clientContent

BidiGenerateMusicClientContent

Không bắt buộc. Các câu lệnh có trọng số và cấu hình tạo nhạc làm đầu vào của quá trình tạo nhạc.

musicGenerationConfig

BidiGenerateMusicGenerationConfig

Không bắt buộc. Cấu hình để tạo nhạc.

playbackControl

BidiGenerateMusicPlaybackControl

Không bắt buộc. Tín hiệu điều khiển chế độ phát để tạo nhạc.

BidiGenerateMusicFilteredPrompt

Câu lệnh bị lọc kèm theo lý do.

Trường
filteredReason

string

Chỉ có đầu ra. Lý do câu lệnh bị lọc.

Trường nhóm prompt. Câu lệnh đã được lọc. prompt chỉ có thể là một trong những giá trị sau:
text

string

Không bắt buộc. Câu lệnh dạng văn bản.

BidiGenerateMusicGenerationConfig

Cấu hình để tạo nhạc.

Trường
temperature

float

Không bắt buộc. Kiểm soát độ biến thiên trong quá trình tạo âm thanh.

Giá trị càng cao thì phương sai càng lớn. Phạm vi là [0.0, 3.0]. Giá trị mặc định là 1.1.

topK

int32

Không bắt buộc. Kiểm soát cách mô hình chọn mã thông báo cho đầu ra.

Lấy mẫu các mã thông báo topK có xác suất cao nhất. Phạm vi là [1, 1000]. Giá trị mặc định là 40.

seed

int32

Không bắt buộc. Tạo âm thanh từ hạt giống. Nếu bạn không đặt, yêu cầu sẽ sử dụng một giá trị ban đầu được tạo ngẫu nhiên.

guidance

float

Không bắt buộc. Kiểm soát mức độ tuân thủ câu lệnh của mô hình. Hướng dẫn càng chi tiết thì hiệu quả sẽ càng cao hơn, nhưng sẽ khiến các chuyển cảnh đột ngột hơn. Phạm vi là [0.0, 6.0]. Giá trị mặc định là 4.0.

bpm

int32

Không bắt buộc. Số nhịp/phút. Phạm vi là [60, 200].

density

float

Không bắt buộc. Mật độ âm thanh. Phạm vi là [0.0, 1.0].

brightness

float

Không bắt buộc. Giá trị càng cao thì âm thanh càng sáng. Phạm vi là [0.0, 1.0].

scale

Scale

Không bắt buộc. Gam của bản nhạc được tạo.

muteBass

bool

Không bắt buộc. Đầu ra âm thanh không được chứa âm trầm.

muteDrums

bool

Không bắt buộc. Đầu ra âm thanh không được chứa tiếng trống.

onlyBassAndDrums

bool

Không bắt buộc. Đầu ra âm thanh chỉ được chứa âm trầm và trống.

musicGenerationMode

MusicGenerationMode

Không bắt buộc. Chế độ tạo nhạc. Giá trị mặc định là QUALITY.

MusicGenerationMode

Enum
MUSIC_GENERATION_MODE_UNSPECIFIED Giá trị này không được dùng.
QUALITY Chế độ này hướng các câu lệnh dạng văn bản đến những vùng có nhạc chất lượng cao hơn trong không gian tiềm ẩn.
DIVERSITY Chế độ này hướng dẫn các câu lệnh dạng văn bản đến các vùng không gian tiềm ẩn với sự đa dạng hơn về âm nhạc.
VOCALIZATION Chế độ này hướng câu lệnh văn bản đến các vùng có không gian tiềm ẩn có nhiều khả năng tạo ra nhạc có giọng hát.

Tỷ lệ

Gam của bản nhạc được tạo.

Enum
SCALE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
C_MAJOR_A_MINOR Đô trưởng hoặc La thứ
D_FLAT_MAJOR_B_FLAT_MINOR Rê giáng trưởng hoặc Si giáng thứ
D_MAJOR_B_MINOR Sol trưởng hoặc Si thứ
E_FLAT_MAJOR_C_MINOR Mi giáng trưởng hoặc Đô thứ
E_MAJOR_D_FLAT_MINOR Mi trưởng hoặc Rê giáng thứ
F_MAJOR_D_MINOR Fa trưởng hoặc Rê thứ
G_FLAT_MAJOR_E_FLAT_MINOR Sol giáng trưởng hoặc Mi giáng thứ
G_MAJOR_E_MINOR Sol trưởng hoặc Mi thứ
A_FLAT_MAJOR_F_MINOR Giáng trưởng hoặc Fa thứ
A_MAJOR_G_FLAT_MINOR La trưởng hoặc Sol giáng thứ
B_FLAT_MAJOR_G_MINOR Si giáng trưởng hoặc Sol thứ
B_MAJOR_A_FLAT_MINOR B giáng trưởng hoặc A giáng thứ

BidiGenerateMusicPlaybackControl

Nút điều khiển chế độ phát cho bản nhạc được tạo.

Enum
PLAYBACK_CONTROL_UNSPECIFIED Giá trị này không được dùng.
PLAY Bắt đầu tạo nhạc.
PAUSE Tạm dừng tạo nhạc. Sử dụng nút PHÁT để tiếp tục từ vị trí hiện tại.
STOP Dừng tạo nhạc và đặt lại ngữ cảnh (giữ lại câu lệnh). Sử dụng lệnh PHÁT để bắt đầu lại quá trình tạo nhạc.
RESET_CONTEXT Đặt lại ngữ cảnh (giữ lại câu lệnh) mà không dừng quá trình tạo nhạc.

BidiGenerateMusicServerContent

Bản cập nhật gia tăng của máy chủ do mô hình tạo ra để phản hồi các thông báo của ứng dụng.

Nội dung được tạo nhanh nhất có thể chứ không phải theo thời gian thực. Ứng dụng có thể chọn lưu vào bộ nhớ đệm và phát theo thời gian thực.

Trường
audioChunks[]

AudioChunk

Chỉ có đầu ra. Các đoạn âm thanh mà mô hình đã tạo.

BidiGenerateMusicServerMessage

Thông báo phản hồi cho lệnh gọi BidiGenerateMusic.

Trường
Trường nhóm messageType. Loại thông báo. messageType chỉ có thể là một trong những trạng thái sau:
setupComplete

BidiGenerateMusicSetupComplete

Chỉ có đầu ra. Được gửi để phản hồi một thông báo BidiGenerateMusicSetup từ máy khách khi quá trình thiết lập hoàn tất.

serverContent

BidiGenerateMusicServerContent

Chỉ có đầu ra. Nội dung do mô hình tạo để phản hồi tin nhắn của khách hàng.

filteredPrompt

BidiGenerateMusicFilteredPrompt

Chỉ có đầu ra. Câu lệnh bị lọc kèm theo lý do.

warning

string

Chỉ có đầu ra. Thông báo cảnh báo từ máy chủ. Cảnh báo sẽ không kết thúc luồng phát.

BidiGenerateMusicSetup

Tin nhắn sẽ được gửi trong BidiGenerateMusicClientMessage đầu tiên (và chỉ trong BidiGenerateMusicClientMessage đầu tiên).

Ứng dụng nên đợi thông báo BidiGenerateMusicSetupComplete trước khi gửi bất kỳ thông báo nào khác.

Trường
model

string

Bắt buộc. Tên tài nguyên của mô hình. Đây là mã nhận dạng mà mô hình sẽ sử dụng.

Định dạng models/{model}

BidiGenerateMusicSetupComplete

Loại này không có trường nào.

Được gửi để phản hồi tin nhắn BidiGenerateMusicSetup của khách hàng.

WeightedPrompt

Lời nhắc có trọng số làm dữ liệu đầu vào cho mô hình.

Trường
weight

float

Bắt buộc. Trọng số của câu lệnh.

Trọng số được dùng để kiểm soát mức độ quan trọng tương đối của câu lệnh. Trọng số cao quan trọng hơn trọng số thấp.

Trọng số của tất cả weighted_prompts trong BidiGenerateMusicClientContent này không được bằng 0. Trọng số của tất cả weighted_prompts trong thông báo BidiGenerateMusicClientContent này sẽ được chuẩn hoá.

Trường nhóm prompt.

prompt chỉ có thể là một trong những trạng thái sau:

text

string

Câu lệnh dạng văn bản.

Thông tin khác về các loại

Để biết thêm thông tin về các loại mà API sử dụng, hãy xem SDK Python.