Speech transcription and read-aloud
Speech workflows usually chain three kinds of models: speech-to-text (STT) turns recordings into text, a chat model extracts decisions and action items, and text-to-speech (TTS) reads notices or summaries aloud. For 200 hours of recordings, 400 sets of minutes and 3,000 spoken notices a month, at live prices in each model’s cheapest group, model costs are about ¥735 a month.
Prices updated Nov 12, 2026, 8:17 PM|
01
The business problem
Meetings, sales calls, support calls and lectures pile up as recordings, yet what people need are the decisions, action items and key questions. Writing up one hour of audio by hand often takes one to two hours.
Transcription is only the first step. Transcripts are long and conversational and still need to become minutes, and follow-up or notification use cases need the text turned back into speech.
Chaining transcription, summarizing and read-aloud into one pipeline, all through the same API and billed by usage, leaves people only the key facts to check.
02
Recommended models
Speech to text (STT)
whisper-1OpenAIinput ¥60 / output ¥60 per 1M tokens· Standard groupTurns meeting and call recordings into transcripts. Split long recordings into 10 to 20 minute files first; requests with very large files are rejected.
Minutes (chat model)
qwen3.5-plusQweninput ¥1.12 / output ¥6.72 per 1M tokens· China Models groupReads the transcript and extracts decisions, owners and due dates. Transcripts are long and minutes short, so the input price matters most.
Text to speech (TTS)
tts-1OpenAIinput ¥30 / output ¥30 per 1M tokens· Standard groupTurns summaries, follow-up scripts or notices into audio files. Available voices depend on the model.
Recommended models are picked from the live catalog; prices are each model's cheapest group, updated Nov 12, 2026, 8:17 PM. Click a model to see every group's price.
03
Reference architecture
- 1
Preprocess audio
Convert to mp3 or wav, split long recordings into 10 to 20 minute pieces and trim silence at the start and end.
- 2
Transcribe
Call the speech-to-text endpoint for each piece; passing the language parameter (for example zh) helps. Join the pieces in order.
- 3
Write minutes
Send the transcript to the chat model with a fixed format: decisions, action items with owner and due date, open questions.
- 4
Read aloud
For notices or follow-ups, send the text to the text-to-speech endpoint, store the audio in your own storage, then distribute it.
- 5
Human check
Names, amounts and dates are easy to mistranscribe, so attendees check the minutes before they go out.
04
Cost estimate
Assumptions: 400 meetings a month at 30 minutes each, 200 hours in total; recordings split into 15-minute pieces for 800 transcription calls, estimated at about 1,000 tokens per minute of audio; each meeting’s transcript is about 9,000 tokens and yields about 800 tokens of minutes; plus 3,000 spoken notices of about 100 characters each.
| Item | Model | Usage assumed | Cost |
|---|---|---|---|
| Transcription | whisper-1 | 800 × 15,000 input tokens | ¥720 |
| Meeting minutes | qwen3.5-plus | 400 × (9,000 input + 800 output tokens) | ¥6.18 |
| Read-aloud notices | tts-1 | 3,000 × 100 input tokens | ¥9 |
| Total (per month) | ¥735.18 | ||
Calculated from live prices in each model's cheapest group, updated Nov 12, 2026, 8:17 PM.
Model usage only. How speech-to-text and text-to-speech are metered is shown under Usage in the console; the table assumes about 1,000 tokens per minute of audio and about 1 token per character. Twice the audio means roughly twice the transcription cost.
05
Sample code
A recording goes through speech-to-text, a chat model summary and text-to-speech, producing minutes and an audio notice.
import os
from openai import OpenAI
client = OpenAI(base_url="https://open.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"])
# 1. speech to text: split long recordings into 10 to 20 minute files first
with open("meeting-part1.mp3", "rb") as f:
transcript = client.audio.transcriptions.create(model="whisper-1", file=f, language="zh")
# 2. turn the transcript into minutes
minutes = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{"role": "system", "content": "Write meeting minutes: decisions, action items with owner and due date, open questions. Under 300 words."},
{"role": "user", "content": transcript.text},
],
).choices[0].message.content
print(minutes)
# 3. read a notice aloud (available voices depend on the model)
with client.audio.speech.with_streaming_response.create(
model="tts-1",
voice="alloy",
input="The minutes of today's meeting have been sent to your inbox.",
) as resp:
resp.stream_to_file("notice.mp3")FAQ
What do 200 hours of transcription plus minutes cost per month?
For 200 hours of recordings, 400 sets of minutes and 3,000 spoken notices, the cheapest groups come to about ¥735 a month. Recording length has the biggest effect on cost.
Which audio formats are supported?
Speech-to-text endpoints commonly accept mp3, mp4, mpeg, mpga, m4a, wav and webm; check the documentation of the model you use. Split long recordings before uploading.
How accurate is transcription?
It depends on audio quality, accents, jargon and overlapping speakers, so there is no fixed number. Put names and terms in the prompt parameter to improve recognition of proper nouns.
Can it tell speakers apart?
Standard transcription returns one block of text without speaker labels. To separate speakers, record each one on its own channel or run speaker diarization first and transcribe the segments separately.
Can synthesized speech be used for outbound calls or other commercial uses?
Technically you can generate audio for notices and announcements. For outbound calls and advertising, follow local rules on automated calling and disclosure of AI-generated voices, and check the model provider’s terms.