Wiadomość głosowa fikcyjnej postaci działa, gdy głos pasuje do osoby, a sposób czytania do momentu. Qwen3 TTS zamienia skrypt dorosłej postaci w jeden plik MP3 z jednym głosem, a sposób czytania sterujesz zwykłą notatką. Zadanie SpicyAPI ma dziewięć presetów głosowych i kosztuje 0,068 $ za 1 000 znaków tekstu, przy minimum 100 znaków na żądanie. Na podstawie naszych testów z września 2026 roku jawne słownictwo dla dorosłych w fragmentach bezpośrednich i w stylu audiobooka zostało odczytane dosłownie. Sprawdza się przy nagranych wiadomościach głosowych i narracji; ta droga nie obejmuje klonowania głosu ani strumieniowania na żywo.
Co zawiera zadanie hostowane
| Szczegóły | Zadanie Qwen3 TTS |
|---|---|
| Wymagane wejście | text, 1–2 000 znaków |
| Kierunek czytania | instructions, do 1 000 znaków; nie jest czytany, nie jest fakturowany |
| Głos domyślny | Serena |
| Wynik | jeden plik MP3 mono 24 kHz |
| Cena | 0,068 $ za 1 000 znaków tekstu, minimum 100 znaków (0,0068 $) |
| Przesłana referencja głosu | niedostępna |
| Kilku mówców w jednym żądaniu | niedostępne; wygeneruj każdą turę osobno |
| Liczbowa prędkość lub wysokość głosu | niedostępne; opisz czytanie w instructions |
Wybierz preset i wygeneruj na stronie zadania Qwen3 TTS. Repozytorium zespołu Qwen obejmuje też warianty CustomVoice, Base (klonowanie) i VoiceDesign. To osobne oferty: argument ref_audio lub speaker biblioteki nie jest tutaj wejściem, pole głosu to voice_id.
Dobierz głos do swojego skryptu
| Preset | Opis głosu z dokumentacji | Język ojczysty |
|---|---|---|
| Serena | ciepły, łagodny głos kobiecy | chiński |
| Vivian | jasny, lekko zaczepny głos kobiecy | chiński |
| Uncle_Fu | niski, spokojny głos męski | chiński |
| Dylan | wyraźny męski głos pekiński | chiński, dialekt pekiński |
| Eric | żywy, lekko chropowy głos męski | chiński, dialekt syczuański |
| Ryan | męski głos o wyrazistym rytmie | angielski |
| Aiden | wyraźny amerykański głos męski | angielski |
| Ono_Anna | lekki, figlarny głos kobiecy | japoński |
| Sohee | ciepły, ekspresyjny głos kobiecy | koreański |
Każdy preset czyta każdy obsługiwany język, ale zespół Qwen zaleca język ojczysty głosu dla najlepszej jakości. Dla męskiej postaci anglojęzycznej zacznij od Ryana albo Aidena. Dla kobiecej postaci anglojęzycznej wypróbuj Serenę albo Vivian; w zestawie nie ma kobiecego głosu z angielskim jako językiem ojczystym, więc odsłuchaj go przed decyzją.
Odsłuchaj przykładową wiadomość głosową Sereną: późnonocna notatka „oddzwoń do mnie" przeczytana z bezdechną, zalotliwą instrukcją.
Najpierw spróbuj w Playground
Otwórz stronę zadania Qwen3 TTS i użyj zakładki Playground:
- W polu Text wklej tylko słowa, które mają być słyszalne (przykładowy skrypt ze strony to dobry pierwszy test).
- Wybierz nazwę w Voice (domyślnie Serena).
- Wpisz notatkę o czytaniu w Delivery instructions.
- Zostaw Language na Auto-detect albo wybierz angielski dla angielskiego skryptu, gdy wykrywanie jest niejednoznaczne.
- Uruchom, potem odtwórz wynik w Output i pobierz plik MP3.
Fikcyjna dorosła osoba po randce: Text „I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.", Voice Serena, Delivery instructions „Ciepło i lekko nieśmiało, mówiąc cicho do jednego dorosłego słuchacza. Ostatnie pytanie zostaw w konwersacyjnym tonie." Nie zaczynaj tekstu od Serena: ani od „Read this in a soft voice"; obie rzeczy zostałyby wypowiedziane. Odsłuchaj tu dwa lub trzy głosy i notatki, zanim napiszesz kod; cena jest widoczna przed uruchomieniem.
language przyjmuje auto, zh, en, de, fr, es, it, pt, ru, ja i ko. Wybiera sposób odczytania tekstu; niczego nie tłumaczy.
Potem wywołaj to z kodu
Zainstaluj SDK Pythona (pip install spicyapi), ustaw SPICY_API_KEY w środowisku i uruchom:
import urllib.request
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="alibaba/qwen-3-tts/text-to-speech",
input_data={
"text": "I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.",
"voice_id": "Serena",
"language": "en",
"instructions": "Warm and slightly shy, speaking quietly to one adult listener. Keep the final question conversational.",
},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
urllib.request.urlretrieve(output_assets(final)[0]["url"], "voice-message.mp3")Oczekiwanie, ponowienia, wyceny i błędy opisuje referencja SDK Pythona oraz przewodnik po zadaniach asynchronicznych.
Albo niech to wykona Agent
Jeśli asystent ma wypowiadać twoje kwestie, daj mu CLI albo serwer MCP. Oba pokazują cenę i proszą o potwierdzenie przed płatnym wywołaniem. Skill dokłada instrukcje do obu.
- CLI.
spicyapiuruchamia jedno zadanie z terminala (npx @spicyapi/clidziała bez instalacji). Wpisz ten sam obiektinputdoinput.json:
``bash spicyapi tasks create --model alibaba/qwen-3-tts/text-to-speech \ --input-file input.json --idempotency-key voice-message-take-1 --wait ``
- Serwer MCP. Dodaj serwer MCP do asystenta i zapytaj: „Przeczytaj tę kwestię głosem Qwen3 TTS, Serena, ciepło i lekko nieśmiało." Wywołuje
spicyapi_task_create(który zatrzymuje się w oczekiwaniu na potwierdzenie ceny), a potemspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstaluje Agent Skill, który uczy asystenta programistycznego odczytywać bieżący schemat i ponownie używać kluczy idempotencji. Sam nie uruchomi zadań, więc używaj go z CLI lub MCP.
Skieruj tę samą kwestię na trzy sposoby
Zostaw tekst i głos, zmieniaj tylko notatkę. Dla „I thought you'd forgotten":
| Zamierzona emocja | Instrukcja do próby |
|---|---|
| Ulga | „Miękki wydech z ulgą, z uśmiechem, ostatnie słowo trochę ciszej" |
| Zranienie | „Cicho i powściągliwie, wolniej, bez uśmiechu" |
| Zaczepka | „Lekko i figlarnie, lekki wzrost na końcu, jakby ktoś ukrywał uśmiech" |
Zmieniaj jedną rzecz naraz. „Usuń szept" albo „wolniej po pierwszym zdaniu" poprawia daną próbę; „bardziej emocjonalnie, bardziej ludzko" nie. Jeśli wynik jest zbyt teatralny, skróć notatkę do „Naturalne czytanie konwersacyjne".
Czy odczyta skrypt NSFW?
Testy objęły bezpośredni fragment dla dorosłych, fragment w konwencji audiobooka i fragment z dużą liczbą wskazówek scenicznych, z użyciem Sereny lub Ryana oraz instrukcji czytania. Transkrypcje bezpośrednia i audiobookowa odpowiadały skryptowi słowo w słowo, włącznie ze słownictwem dla dorosłych, a tekst instrukcji nigdy nie został wypowiedziany.
Fragment z dużą liczbą wskazówek zachował słownictwo dla dorosłych, ale bardziej odbiegał od skryptu z powodu wokalizacji niesłownych. Traktuj oddechy i śmiech jako coś do odsłuchania, nie do sterowania: jeśli scena od tego zależy, wygeneruj najpierw ten moment i nie zakładaj, że składnia nawiasowa innego modelu tu zadziała.
Zbuduj scenę z dwiema postaciami
Jedno żądanie to jeden głos. Dla dwóch fikcyjnych dorosłych wygeneruj każdą turę osobno:
| Tura | Głos | Tekst | Kierunek |
|---|---|---|---|
| 1 | Serena | „Did you really think I'd leave without saying goodnight?" | ciepłe, spokojne pytanie |
| 2 | Ryan | „No. I was hoping you would come find me." | cicha, rozbawiona odpowiedź |
Samouczki ComfyUI o wielu mówcach parsują nazwy mówców, przerwy i nakładanie się w dodatkowym węźle; te tagi nie są tu polami wejściowymi. Usuń nazwy z wypowiadanego tekstu, wyślij każdą turę z własnym voice_id, a potem ustaw przerwy w edytorze. Zacznij od krótkiej przerwy i przesuwaj drugi klip, dopóki odpowiedź nie zabrzmi naturalnie. Wpisanie obu nazw do jednego pola text daje jeden preset, który czyta etykiety i obie kwestie. Aby napisać scenariusz całej wymiany i automatycznie połączyć klipy, zobacz workflow dialogowy Seed Speech 2.0; jego skrypt łączący działa z każdym głosem.
Dla długiej historii czytanej jednym głosem dziel tekst przed 2 000 znaków na granicach zdań lub akapitów i używaj tego samego głosu oraz notatki w każdym fragmencie. Aby wymienić frazę, wygeneruj od nowa całe otaczające zdanie i przytnij przy sąsiednich pauzach, żeby głośność i tempo nadal się zgadzały.
Minimalna opłata ma znaczenie przy krótkich odpowiedziach
Koszt to max(text characters, 100) × $0.068 / 1,000, przy czym liczymy spacje i interpunkcję. Instrukcje są bezpłatne.
| Długość wejścia | Liczone znaki | Koszt |
|---|---|---|
| 40 znaków | 100 | 0,0068 $ |
| 80 znaków | 100 | 0,0068 $ |
| 180 znaków | 180 | 0,01224 $ |
| 1 000 znaków | 1 000 | 0,068 $ |
| 2 000 znaków | 2 000 | 0,136 $ |
Dziesięć osobnych odpowiedzi po 40 znaków kosztuje 0,068 $, mimo że ich teksty razem mają tylko 400 znaków; jedno żądanie z 400 znakami tym samym głosem kosztuje 0,0272 $. Łącz ciągłą narrację jednego głosu, gdy na to pozwala twój montaż, ale nie łącz różnych postaci, by uniknąć opłaty minimalnej.
Napraw nieudany wynik
| Problem | Zmiana |
|---|---|
| Kwestia jest za szybka | Dodaj do instructions „Bez pośpiechu, z naturalną pauzą po pierwszym zdaniu" |
| Nazwa jest wymówiona źle | Zapisz ją fonetycznie w text; w publicznej transkrypcji zachowaj poprawną pisownię |
| Notatka ledwo zmienia barwę | Wypróbuj inny preset; instrukcje czytania nie zmieniają podstawowej charakterystyki głosu |
Żądanie odrzuca speed, pitch lub ref_audio | Usuń je i użyj czterech pól powyżej |
Jeśli potrzebujesz klonowania wgranego głosu lub rozmowy na żywo, wybierz zadanie, które to udostępnia; aby porównać inne modele mowy dla skryptów dla dorosłych, zobacz nasze porównanie API syntezy mowy.






