Orux AI / Notas sobre modelos
Qwen3 TTS: dividir aulas sem perder o texto
Prepare aulas bilíngues para Qwen3 TTS: divisor Python local, 3 partes reais, preservação exata, limites do formulário e tarifas atuais em Credits.

Neste artigo
Prepare a aula em partes revisáveis antes de sintetizar
Uma aula de campo bilíngue pode passar de instruções em inglês para observações em chinês e voltar em poucas frases. Enviar o documento inteiro ao formulário nem sempre é o começo ideal. É preciso preservar palavras, limitar cada entrada e revisar a ordem. Cortar a cada quantidade fixa de caracteres pode partir uma instrução.
Este guia entrega um divisor Python offline para o formulário Orux atual de qwen3-tts-flash, com speech-2.8-hd como segunda opção do catálogo. Produz três partes ordenadas, preserva todos os caracteres e rejeita segmentos longos em vez de cortá-los ou descartá-los. Não gera áudio nem avalia pronúncia ou naturalidade bilíngue: essas decisões exigem escuta posterior.
Os dois campos verificados declaram máximo de 600 caracteres. A ferramenta usa um teto local em unidades UTF-16, reduzido a 80 na demonstração. É uma regra conservadora de preparação, não definição de caracteres cobrados nem contexto nativo de toda a família. Separe limite de entrada, representação textual e quantidade faturada.

Confira os formulários antes da entrega do roteiro
qwen3-tts-flash lista input e a voz Cherry; speech-2.8-hd, text e male-qn-qingse. Ambos declaram 600 na configuração pública de 1º de novembro de 2026. Não troque os nomes de campos apenas porque as duas tarefas produzem fala.
Isso não confirma todas as vozes anunciadas em outros lugares, marcação avançada de pronúncia, idioma por frase ou tempo exato. Um nome de voz não prova a leitura correta de uma palavra inglesa ou lugar chinês. Após autorização, ouça um trecho aprovado; roteiro proposto não é uma gravação já validada.
Guarde o texto como fonte revisável. As partes mantêm número e palavras exatas; outro manifesto poderá associá-las à voz aprovada e ao arquivo. Se o professor muda uma frase, limites claros ajudam a localizar o que regenerar, sem prometer uma união perfeita entre gravações antigas e novas.
Defina os limites de frase desta ferramenta
Reconhece ponto final, interrogação e exclamação chineses, além dos equivalentes ingleses seguidos de espaço em branco ou fim da string. Assim não corta o ponto de um decimal simples como 3.5. Não entende toda abreviação, citação ou convenção linguística; uma pessoa revisa os segmentos.
Não remove espaços nem normaliza pontuação. Agrupa pedaços vizinhos até o teto escolhido. Se um pedaço sozinho ultrapassa o limite, falha e pede edição humana em vez de cortá-lo. Preservação exata e limites simples vêm antes da aceitação automática de qualquer documento.
Rejeita entrada vazia e exige inteiro de 1 a 600. O teto 80 serve para exercitar várias partes com uma amostra curta, não para recomendar duração nem converter unidades em segundos. Velocidade da fala, pausas e duração devem ser medidas em gravação real.
Execute o divisor completo localmente
Salve como chunk_lesson.py e execute python3 chunk_lesson.py. Usa só a biblioteca padrão, sem API Key ou rede. A fonte inventada ensina a observar folhas sem arrancar plantas. É amostra editorial, não resposta de modelo, teste em sala ou gravação de professor real.
"""Local text preparation only. No TTS request or billed-character measurement."""
import json
import re
def units(text):
return len(text.encode("utf-16-le")) // 2
def chunks(text, limit=600):
if not isinstance(text, str) or not text.strip():
raise ValueError("A nonempty lesson is required")
if type(limit) is not int or not 1 <= limit <= 600:
raise ValueError("Choose a local cap from 1 to 600 UTF-16 units")
pieces = re.split(r"(?<=[。!?])|(?<=[.!?])(?=\s|$)", text)
result, current = [], ""
for piece in pieces:
if not piece:
continue
if units(piece) > limit:
raise ValueError("One segment exceeds cap; edit it manually")
if current and units(current + piece) > limit:
result.append(current)
current = ""
current += piece
if current:
result.append(current)
assert "".join(result) == text
assert all(0 < units(x) <= limit for x in result)
return result
if __name__ == "__main__":
lesson = ("Welcome to the field lesson. Observe the leaf before naming it. "
"先观察叶子的边缘,再记录它的形状。不要采摘植物。 "
"Write one observation in your notebook. Then compare it with your partner.")
output = chunks(lesson, limit=80)
assert len(chunks("Ready 🌿. Next step.", 12)) == 2
assert units("🌿") == 2 and len("🌿") == 1
for text, limit in [("x" * 81, 80), ("", 80), (lesson, 601)]:
try:
chunks(text, limit)
except ValueError:
pass
else:
raise AssertionError("Invalid lesson accepted")
print(json.dumps([{"part": i+1, "utf16_units": units(t), "text": t}
for i, t in enumerate(output)], ensure_ascii=False, indent=2))Resultado local observado:
[
{
"part": 1,
"utf16_units": 63,
"text": "Welcome to the field lesson. Observe the leaf before naming it."
},
{
"part": 2,
"utf16_units": 65,
"text": " 先观察叶子的边缘,再记录它的形状。不要采摘植物。 Write one observation in your notebook."
},
{
"part": 3,
"utf16_units": 35,
"text": " Then compare it with your partner."
}
]As três partes têm 63, 65 e 35 unidades UTF-16. Espaços iniciais são intencionais: unir os textos na ordem recupera exatamente a fonte. O código verifica essa identidade e os tetos. Não remova espaços e continue afirmando a mesma preservação. Se outra aplicação exige limpeza, revise e aprove essa transformação separadamente.
O emoji de folha ocupa um ponto de código Unicode em Python, mas duas unidades UTF-16. Nenhuma medida representa fala, duração ou fatura. Um símbolo visível também pode não ser uma boa instrução de leitura. Decida separadamente se deve virar palavras aprovadas numa aula real.
Examine falhas úteis antes de documentos reais
O exemplo rejeita 81 unidades sob teto 80, aula vazia e limite superior a 600. Verifica ainda que um trecho curto com emoji forme duas partes sob 12. Isso testa contrato local e um caso de representação, não TTS remoto, idioma inteiro ou todo formato de arquivo.
Se uma frase é longa, transforme-a em duas instruções claras num ponto significativo. Não corte orientação de segurança ou elimine a condição final silenciosamente. Aprove a nova fonte, repita e confira texto reunido e ordem com o professor. Passar na contagem só ajuda se a intenção permanecer.
A regra pode separar uma abreviação inadequadamente ou deixar uma aspa final na parte seguinte. São motivos de revisão, não prova de entendimento. Para citações e notação especializada complexas, ajuste regras ou organize partes manualmente antes de enviar à geração.
Compare a unidade sem inventar uma fatura do roteiro
| Alias Orux | Unidade | Credits/1,000 caracteres cobrados | 3,000 caracteres hipotéticos |
|---|---|---|---|
| qwen3-tts-flash | per_kchar | 2.1669 | 6.5007 |
| speech-2.8-hd | per_kchar | 10.2084 | 30.6252 |
Deslize para os lados para ver toda a tabela.
Tarifas públicas comuns Orux verificadas em 1º de novembro de 2026; 1 Credit=$0.005. Ambas especificam quantidade exata e nenhum mínimo adicional. A última coluna multiplica 3,000 caracteres cobrados hipotéticos, não mede nem orça as três partes. Nenhuma solicitação de áudio forneceu consumo real.
Não multiplique comprimento Python, UTF-16 ou bytes UTF-8 e chame de cobrança liquidada. O teto prepara texto; uso final de fala é outra quantidade medida. A divisão também muda número de solicitações e trabalho de revisão. Confira preço e estimativa atuais antes de autorizar síntese, sobretudo após mudanças de condições.
A diferença tarifária não estabelece preferência de voz, pronúncia, duração ou vencedor de qualidade. Não comparamos preços oficiais independentemente nem afirmamos economia. Escolha pela tarefa e ouça uma amostra adequada autorizada. Uma gravação barata e inutilizável não conclui a entrega da aula.
Separe a escuta posterior da validação textual
Para o curso real, guarde número, fonte exata, alias solicitado e voz aprovada. Após gerar, acrescente URL e estado de revisão sem substituir a fonte. Ouça palavras omitidas, nomes incorretos, pausas ruins e mudanças entre partes. Confira duração e ordem na mídia real, não pela contagem de caracteres.
A extração estruturada, em inglês preserva ausências sem inventar dados; a entrada de suporte, em inglês controla campos que saem do sistema local. Aqui o contrato preserva toda a aula aprovada enquanto limita e torna inspecionáveis suas entradas. Apagar texto difícil silenciosamente não resolve um segmento longo.
Preços verificados em 2026-11-01. Fontes e páginas atuais: Catálogo público, Catálogo público, Referência Python, Referência Python. qwen3-tts-flash, speech-2.8-hd.
FAQ
O máximo de 600 é o limite nativo do modelo?
Não. É o máximo declarado do campo em dois formulários Orux verificados, não de toda API, implantação ou contexto nativo. O programa usa explicitamente unidades UTF-16. Confira o contrato atual antes de enviar um documento maior por outro caminho.
O divisor perde espaços ou muda pontuação?
Não na transformação definida. Ele não apara e verifica que a união reproduz a fonte. Os espaços iniciais são deliberados. Normalização posterior precisa de revisão separada, sem manter uma promessa de preservação exata que já não se cumpra.
Isso prova boa leitura bilíngue das duas vozes?
Não. Não geramos nem avaliamos áudio. Conferimos campos, limites locais e tarifas. Uma gravação bilíngue exige escuta autorizada para pronúncia, omissões e transições. Nome de voz e teste de comprimento não comprovam essas qualidades.
63, 65 e 35 são caracteres cobrados?
Não. São comprimentos UTF-16 da amostra local, não uso de fala medido ou fatura. A tabela usa quantidades hipotéticas explícitas para explicar aritmética sem inventar uma regra de medição de solicitações reais.
O que fazer quando um segmento é longo demais?
Edite manualmente num ponto significativo, aprove a fonte e repita. A ferramenta rejeita em vez de cortar uma instrução ou descartar palavras. Confira abreviações e citações: a regra simples de pontuação não é um analisador linguístico que entende a aula.
Use estes modelos com uma única API
Uma API compatível com OpenAI para modelos de chat, imagem, vídeo e áudio, cobrada em Credits.
Artigos relacionados
Ver todos os artigos →
gpt-6-luna: preparar o resumo sem mensagens brutas
Prepare 4 chamados para gpt-6-luna sem mensagens brutas. Inclui lista permitida, Python local, JSON real, rejeições testadas e preços Orux em Credits.

APIs de vídeo econômicas: Vidu, Wan, Kling e Seedance
Compare custo por segundo e vídeo, entradas e limites de Vidu, Wan, Kling e Seedance, com Python, exemplos reais e preços datados sem prometer mínimo global.

DeepSeek API: preços, horários, Flash e Pro
Compare preços DeepSeek e Credits Orux, horários e custos semanais. Inclui Python, cache e um caso real de texto, com limites e dados históricos claros.