Views
No views yet
stepfun-ai/Step-Audio-R1Notes: Keeplm_headin high precision; calibrate on long, domain-relevant sequences.
1docker run --rm -ti --gpus all \
2 -v $(pwd)/Step-Audio-R1:/Step-Audio-R1 \
3 -p 9999:9999 \
4 stepfun2025/vllm:step-audio-2-v20250909 \
5 vllm serve /Step-Audio-R1 \
6 --served-model-name Step-Audio-R1 \
7 --port 9999 \
8 --max-model-len 16384 \
9 --max-num-seqs 32 \
10 --chat-template '{%- macro render_content(content) -%}{%- if content is string -%}{{- content.replace("<audio_patch>\n", "<audio_patch>") -}}{%- elif content is mapping -%}{{- content['"'"'value'"'"'] if '"'"'value'"'"' in content else content['"'"'text'"'"'] -}}{%- elif content is iterable -%}{%- for item in content -%}{%- if item.type == '"'"'text'"'"' -%}{{- item['"'"'value'"'"'] if '"'"'value'"'"' in item else item['"'"'text'"'"'] -}}{%- elif item.type == '"'"'audio'"'"' -%}<audio_patch>{%- endif -%}{%- endfor -%}{%- endif -%}{%- endmacro -%}{%- if tools -%}{{- '"'"'<|BOT|>system\n'"'"' -}}{%- if messages[0]['"'"'role'"'"'] == '"'"'system'"'"' -%}{{- render_content(messages[0]['"'"'content'"'"']) + '"'"'<|EOT|>'"'"' -}}{%- endif -%}{{- '"'"'<|BOT|>tool_json_schemas\n'"'"' + tools|tojson + '"'"'<|EOT|>'"'"' -}}{%- else -%}{%- if messages[0]['"'"'role'"'"'] == '"'"'system'"'"' -%}{{- '"'"'<|BOT|>system\n'"'"' + render_content(messages[0]['"'"'content'"'"']) + '"'"'<|EOT|>'"'"' -}}{%- endif -%}{%- endif -%}{%- for message in messages -%}{%- if message["role"] == "user" -%}{{- '"'"'<|BOT|>human\n'"'"' + render_content(message["content"]) + '"'"'<|EOT|>'"'"' -}}{%- elif message["role"] == "assistant" -%}{{- '"'"'<|BOT|>assistant\n'"'"' + (render_content(message["content"]) if message["content"] else '"'"''"'"') -}}{%- set is_last_assistant = true -%}{%- for m in messages[loop.index:] -%}{%- if m["role"] == "assistant" -%}{%- set is_last_assistant = false -%}{%- endif -%}{%- endfor -%}{%- if not is_last_assistant -%}{{- '"'"'<|EOT|>'"'"' -}}{%- endif -%}{%- elif message["role"] == "function_output" -%}{%- else -%}{%- if not (loop.first and message["role"] == "system") -%}{{- '"'"'<|BOT|>'"'"' + message["role"] + '"'"'\n'"'"' + render_content(message["content"]) + '"'"'<|EOT|>'"'"' -}}{%- endif -%}{%- endif -%}{%- endfor -%}{%- if add_generation_prompt -%}{{- '"'"'<|BOT|>assistant\n<think>\n'"'"' -}}{%- endif -%}' \
11 --enable-log-requests \
12 --interleave-mm-strings \
13 --trust-remote-code1import requests
2import base64
3
4with open("audio.wav", "rb") as f:
5 audio_b64 = base64.b64encode(f.read()).decode()
6
7payload = {
8 "model": "Step-Audio-R1",
9 "stream": True,
10 "messages": [
11 {
12 "role": "user",
13 "content": [
14 {"type": "input_audio", "audio_data": audio_b64, "mime_type": "audio/wav"},
15 {"type": "text", "text": "Transcribe this and describe the speaker."}
16 ]
17 }
18 ]
19}
20
21with requests.post(
22 "http://localhost:9999/v1/chat/completions",
23 json=payload,
24 stream=True,
25) as r:
26 for line in r.iter_lines():
27 if line:
28 print(line.decode())