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
|
|
data |
Các byte thô của đoạn âm thanh. |
mimeType |
Loại MIME của nội dung trong đoạn âm thanh, chẳng hạn như "audio/wav". |
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 |
Câu lệnh có trọng số để tạo đoạn âm thanh này. |
musicGenerationConfig |
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[] |
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
|
|
setup |
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 |
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 |
Không bắt buộc. Cấu hình để tạo nhạc. |
playbackControl |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Không bắt buộc. Số nhịp/phút. Phạm vi là [60, 200]. |
density |
Không bắt buộc. Mật độ âm thanh. Phạm vi là [0.0, 1.0]. |
brightness |
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 |
Không bắt buộc. Gam của bản nhạc được tạo. |
muteBass |
Không bắt buộc. Đầu ra âm thanh không được chứa âm trầm. |
muteDrums |
Không bắt buộc. Đầu ra âm thanh không được chứa tiếng trống. |
onlyBassAndDrums |
Không bắt buộc. Đầu ra âm thanh chỉ được chứa âm trầm và trống. |
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[] |
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 |
Chỉ có đầu ra. Được gửi để phản hồi một thông báo |
serverContent |
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 |
Chỉ có đầu ra. Câu lệnh bị lọc kèm theo lý do. |
warning |
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 |
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 |
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 |
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
|
|
text |
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.