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 ứng dụng bắt đầu một kết nối mới, phiên này 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 bộ đ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

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

Hãy xem ví dụ về cấu hình 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, ứng dụng 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 ứng dụng

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

Nhắn tin Mô tả
BidiGenerateMusicSetup Cấu hình phiên chỉ được gửi trong tin nhắn đầu tiên
BidiGenerateMusicClientContent Câu lệnh có trọng số làm dữ liệu đầu vào của 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 lắng nghe sự kiện "message" của WebSocket, sau đó phân tích cú pháp 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 từ thông báo BidiGenerateMusicServerMessage. (Hợp nhất messageType không được biểu thị trong 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

Biểu diễn 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 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 dữ liệu để 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ư 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 được gửi trong thông báo đầu tiên và chỉ thông báo đầu tiên của ứng dụng.

clientContent

BidiGenerateMusicClientContent

Không bắt buộc. Câu lệnh có trọng số và cấu hình tạo nhạc làm dữ liệu đầ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 cho tính năng tạo nhạc.

BidiGenerateMusicFilteredPrompt

Câu lệnh đã 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 trạng thái sau:
text

string

Không bắt buộc. Câu lệnh 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 có thể ảnh hưởng đến chất lượng đầu ra âm thanh. Phạm vi là [0.0, 6.0]. Giá trị mặc định là 4.0.

bpm

int32

Không bắt buộc. Nhịp trên 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. Quy mô của bản nhạc được tạo.

muteBass

bool

Không bắt buộc. Đầu ra âm thanh không được có â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ỉ nên 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âu lệnh văn bản đến các vùng không gian tiềm ẩn có nhạc chất lượng cao hơn.
DIVERSITY Chế độ này hướng các câu lệnh văn bản đến những vùng có độ đa dạng âm nhạc cao hơn trong không gian tiềm ẩn.
VOCALIZATION Chế độ này hướng các câu lệnh văn bản đến những vùng có không gian tiềm ẩn có khả năng tạo ra nhạc có giọng hát cao hơn.

Quy mô

Quy mô 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 giáng 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 trưởng hoặc A giáng thứ

BidiGenerateMusicPlaybackControl

Bộ điều khiển chế độ phát cho tính năng tạo nhạc.

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 phát từ vị trí hiện tại.
STOP Dừng tạo nhạc và đặt lại ngữ cảnh (lưu giữ câu lệnh). Sử dụng nút PHÁT để bắt đầu tạo nhạc lại.
RESET_CONTEXT Đặt lại bối 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 tin nhắn BidiGenerateMusicSetup của khách hàng 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 đã 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 buổi phát trực tiếp.

BidiGenerateMusicSetup

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

Các ứng dụng nên đợi thông báo BidiGenerateMusicSetupComplete trước khi gửi thêm thông báo.

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ô hình 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 một thông báo BidiGenerateMusicSetup từ ứng dụng.

WeightedPrompt

Câu lệnh 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 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 Python SDK.