Orux AI / Notas sobre modelos
Qwen3 TTS: dividir lecciones sin perder texto
Prepara lecciones bilingües para Qwen3 TTS: divisor Python local, 3 partes reales, conservación exacta, límites del formulario y tarifas Credits.

En este artículo
Preparar la lección en partes revisables antes de sintetizarla
Una lección de campo bilingüe puede pasar de una instrucción inglesa a una observación china y volver en pocas frases. Antes de enviar todo al formulario, el autor necesita conservar palabras, limitar cada entrada y revisar el orden. Cortar cada número fijo de caracteres puede partir una instrucción.
Esta guía entrega un divisor Python offline para el formulario Orux actual de qwen3-tts-flash, con speech-2.8-hd como segunda opción del catálogo. Produce tres partes ordenadas, conserva todos los caracteres y rechaza segmentos demasiado largos en vez de cortarlos o descartarlos. No genera audio ni evalúa pronunciación o naturalidad bilingüe: eso queda para una escucha posterior.
Los dos formularios revisados declaran un máximo de 600 caracteres en el texto. La herramienta usa un límite local en unidades UTF-16, reducido a 80 para la demostración. Es una regla conservadora de preparación, no la definición de caracteres facturados ni el contexto nativo de toda la familia. Distingue límite de entrada, representación y cantidad cobrada.

Comprobar los formularios antes de entregar el guion
qwen3-tts-flash enumera el campo input y la voz Cherry; speech-2.8-hd, el campo text y male-qn-qingse. Los dos campos declaran 600 en la configuración pública del 1 de noviembre de 2026. No intercambies nombres solo porque ambos trabajos producen voz.
No queda establecido el soporte de todas las voces anunciadas en otros sitios, marcado avanzado de pronunciación, idioma por frase o tiempos exactos. El nombre de una voz no prueba que pronuncie bien una palabra inglesa o un topónimo chino. Una vez autorizada la generación, escucha un fragmento aprobado; no presentes un guion propuesto como una grabación ya validada.
Conserva el texto como fuente revisable. Las partes deben mantener número y palabras exactas; otro manifiesto podrá asociarlas con voz aprobada y archivo. Si un profesor cambia una frase, los límites ayudan a identificar qué regenerar, sin prometer que grabaciones antiguas y nuevas se unan perfectamente.
Definir los límites de frase de esta herramienta
Reconoce punto, interrogación y exclamación chinos, y los equivalentes ingleses seguidos de espacio en blanco o final de cadena. Así no trata el punto de un decimal simple como 3.5 como límite. No comprende todas las abreviaturas, citas o convenciones; una persona revisa la segmentación.
No recorta espacios ni normaliza puntuación. Combina piezas vecinas hasta el límite elegido. Si una pieza sola lo supera, falla y pide editarla manualmente en vez de partirla. La prioridad es preservar exactamente y usar límites simples, no aceptar automáticamente todos los documentos.
Rechaza una entrada vacía y exige un límite entero de 1 a 600. Usamos 80 para que una muestra breve ejercite varias partes, no como duración recomendada ni equivalencia a segundos. Velocidad de habla, pausas y duración deben medirse en una grabación real.
Ejecutar el divisor completo localmente
Guarda como chunk_lesson.py y ejecuta python3 chunk_lesson.py. Usa la biblioteca estándar, sin API Key ni red. El texto inventado enseña a observar hojas sin arrancar plantas: es una muestra editorial, no respuesta de modelo, prueba de aula ni grabación de un docente 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."
}
]Las partes tienen 63, 65 y 35 unidades UTF-16. Los espacios iniciales son intencionados: unir los textos en orden recrea exactamente la fuente. El código verifica identidad y límites. No recortes las partes y sigas afirmando la misma preservación. Si otra aplicación necesita limpiar espacios, revisa esa transformación y aprueba su texto por separado.
La hoja emoji ocupa un punto de código Unicode de Python y dos unidades UTF-16. Ninguno mide contenido hablado, duración ni factura. Un símbolo visible tampoco siempre es una instrucción adecuada de lectura. Decide aparte si conviene sustituirlo por palabras aprobadas en una lección real.
Revisar fallos útiles antes de un documento real
El ejemplo rechaza un segmento de 81 unidades bajo un límite de 80, una lección vacía y un límite mayor de 600. Comprueba también que el ejemplo corto con emoji produzca dos partes bajo 12. Valida el contrato local y un caso de representación, no el TTS remoto, un idioma completo o todos los formatos.
Si una frase es larga, conviértela en dos instrucciones claras en un punto significativo. No elimines la condición final ni cortes una instrucción de seguridad. Aprueba la fuente nueva, repite el programa y revisa unión y orden con el docente. Pasar el contador solo sirve si se conserva el sentido previsto.
La regla puede cortar en una abreviatura inconveniente o dejar una comilla final en el segmento siguiente. Son motivos de revisión, no evidencia de comprensión. Para citas y notación especializada complejas, ajusta reglas o prepara segmentos manualmente antes de usarlos en generación.
Comparar la unidad sin inventar una factura del guion
| Alias Orux | Unidad | Credits/1,000 caracteres facturados | 3,000 caracteres hipotéticos |
|---|---|---|---|
| qwen3-tts-flash | per_kchar | 2.1669 | 6.5007 |
| speech-2.8-hd | per_kchar | 10.2084 | 30.6252 |
Desliza horizontalmente para ver toda la tabla.
Tarifas públicas ordinarias Orux comprobadas el 1 de noviembre de 2026; 1 Credit=$0.005. Ambas filas especifican cantidad exacta y ningún mínimo adicional. La última columna usa una cantidad facturada hipotética de 3,000, no mide ni cotiza las tres partes. No se hizo una solicitud de audio para obtener consumo real.
No multipliques longitud Python, longitud UTF-16 o bytes UTF-8 y lo llames cargo liquidado. El límite prepara texto; la voz final es otra cantidad medida. Dividir también cambia número de solicitudes y trabajo de revisión. Revisa tarifas y estimación actual antes de autorizar síntesis, sobre todo después de cambios de condiciones.
La diferencia de tarifa no establece preferencia de voz, precisión, duración o ganador de calidad. No comparamos precios oficiales de forma independiente y no afirmamos ahorro frente a ellos. Selecciona por la tarea y escucha una muestra autorizada. Una grabación barata inutilizable no completa la lección.
Separar la escucha posterior de la validación textual
Para el curso real, conserva número, fuente exacta, alias solicitado y voz aprobada. Tras generar, añade URL y estado de revisión sin sobrescribir el texto. Escucha omisiones, nombres mal pronunciados, pausas y cambios entre partes. Comprueba duración y orden en los medios reales, no con un contador de caracteres.
La extracción estructurada, en inglés conserva ausencias sin inventar datos; la preparación de soporte, en inglés controla qué campos salen del sistema local. El contrato aquí conserva toda la lección aprobada y limita sus entradas. Borrar contenido difícil silenciosamente no es una solución a un segmento largo.
Precios comprobados el 2026-11-01. Fuentes y páginas actuales: Catálogo público, Catálogo público, Referencia Python, Referencia Python. qwen3-tts-flash, speech-2.8-hd.
FAQ
¿El máximo de 600 es el límite nativo del modelo?
No. Es el máximo declarado del campo en los dos formularios Orux revisados, no el de cualquier API, despliegue o contexto nativo. El programa usa unidades UTF-16 explícitas. Revisa el contrato actual antes de enviar un documento mayor por otra vía.
¿El divisor pierde espacios o cambia puntuación?
No dentro de su transformación definida. No recorta y verifica que la unión reproduzca la fuente. Los espacios iniciales son deliberados. Si normalizas después, revisa un cambio separado y no mantengas una promesa de preservación exacta que ya no se cumpla.
¿Esto demuestra que ambas voces leen bien los dos idiomas?
No. No generamos ni evaluamos audio. Comprobamos campos, límites locales y tarifas. La grabación bilingüe necesita una escucha autorizada para pronunciación, omisiones y transiciones. Ni un nombre de voz ni pasar longitud prueban esas cualidades.
¿63, 65 y 35 son cantidades facturadas?
No. Son longitudes UTF-16 impresas por la muestra local, no consumo de voz ni factura. La tabla utiliza cantidades hipotéticas explícitas para explicar aritmética sin inventar una regla de medición de solicitudes reales.
¿Qué hago si un segmento supera el límite?
Edítalo manualmente en un punto significativo, aprueba la fuente y repite. El programa rechaza en vez de cortar una instrucción o borrar texto. Revisa abreviaturas y citas: su puntuación simple no es un analizador lingüístico que comprenda la lección.
Usa estos modelos con una sola API
Una API compatible con OpenAI para modelos de chat, imagen, vídeo y audio, facturada en Credits.
Artículos relacionados
Ver todos los artículos →
gpt-6-luna: preparar un resumen sin mensajes originales
Prepara 4 consultas para gpt-6-luna sin mensajes brutos. Incluye lista de permitidos, Python local, JSON real, casos rechazados y tarifas Orux Credits.

DeepSeek API: precios, horarios y Flash frente a Pro
Compara precios DeepSeek y Credits Orux, horarios y costes semanales. Incluye Python, caché y un caso de texto real sin promesas de calidad inventadas.

GPT Image 2.5 API: precios de Flare y Sunburst
Compara precios de GPT Image 2.5 en Credits, límites y variantes. Incluye Python, una librería en miniatura real y revisión de texto y tamaño de imagen.