Xu hướng Lưu lượng Truy cập Theo Giờ (24h qua)
Realtime SQLite AnalyticsPhân bổ Theo Dịch vụ
Top API Keys Tiêu thụ Tài nguyên
| Tên API Key | Mã nhận diện (Masked) | Trạng thái | Lượt Request (Used / Limit) | Ký tự TTS (Used / Limit) | Giây STT (Used / Limit) | Truy cập cuối |
|---|
Nhật ký Truy cập Gần nhất (Live Request Traffic Logs)
Theo dõi lưu lượng request chi tiết thời gian thực, mã phản hồi HTTP, độ trễ và hạn ngạch khấu trừ.
| Thời gian | API Key | Dịch vụ / Endpoint | Phương thức | Mã HTTP | Tài nguyên tiêu thụ | Độ trễ | IP Client / Chi tiết |
|---|
Danh sách API Keys & Quản lý Hạn ngạch (Quota)
Tạo khóa mới, cấu hình hạn mức Lượt gọi / Ký tự TTS / Giây STT, Rate Limit RPM và kiểm soát trạng thái truy cập.
| Tên & Mô tả | Mã Khóa (Masked) | Trạng thái | Rate Limit | Quota Lượt Request | Quota Ký tự TTS | Quota Giây STT | Hạn sử dụng | Thao tác |
|---|
Danh mục File Sinh ra (TTS Output & STT Uploads)
Mặc định TTS stream trực tiếp về client; khi truyền ?save_file=true hệ thống sẽ lưu file tại đây. File STT upload được lưu tự động và xóa sau khi hết hạn TTL.
| Mã File | Dịch vụ | Tên File Gốc | API Key | Kích thước | Thời lượng | Thời gian tạo | Hết hạn (TTL) | Trạng thái | Thao tác |
|---|
Chiều 1: Text-to-Speech (TTS) — Tổng hợp Giọng nói
Endpoint: POST /v1/audio/speech · VieNeu-TTS v3 Turbo 48kHz & Native Bilingual
Chiều 2: Speech-to-Text (STT) — Nhận diện Giọng nói
Sherpa-ONNX ZipFormer-30M INT8 (VLSP 2025) & Faster-Whisper Multilingual
{}
WebSocket STT Streaming Playground
Kiểm thử nhận diện thời gian thực bảo vệ bằng API Key và trừ Quota.
Đặc tả Mô hình Streaming STT với Frontend Bên thứ 3
Hoặc gửi api_key trong JSON frame khởi tạo đầu tiên ngay khi mở kết nối WebSocket.
- Encoding: Raw PCM 16-bit Signed Integer Little-Endian (
pcm16) hoặc Float32 (f32). - Sample Rate: Khuyến nghị
16000 Hz,1 kênh (Mono)(Server tự động resample nếu client gửi 44.1kHz/48kHz). - Kích thước Chunk: Gửi Binary Frame mỗi
100ms - 250ms(~3.200 - 8.000 bytes/frame).
1000: Hoàn tất phiên bình thường.4001: Thiếu hoặc sai API Key (Unauthorized).4002: Hết Quota thời lượng STT / Lượt request / Vượt Rate Limit RPM.4003: API Key bị khóa (Disabled/Revoked) hoặc đã quá hạn sử dụng.
Code Mẫu Tích hợp Frontend Bên thứ 3 (JavaScript / Web Audio API)
class VoiceAIStreamingClient {
constructor({ apiKey, host = window.location.host, language = "vi", onPartial, onFinal, onError }) {
this.wsUrl = `ws://${host}/v1/audio/transcriptions/stream?api_key=${encodeURIComponent(apiKey)}&language=${language}`;
this.onPartial = onPartial || (() => {});
this.onFinal = onFinal || (() => {});
this.onError = onError || console.error;
}
async startMicrophone() {
this.ws = new WebSocket(this.wsUrl);
this.ws.binaryType = "arraybuffer";
this.ws.onopen = () => {
this.ws.send(JSON.stringify({
action: "start",
sample_rate: 16000,
channels: 1,
format: "pcm16",
language: "vi",
interim_results: true
}));
};
this.ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "transcript") {
if (msg.is_final) this.onFinal(msg);
else this.onPartial(msg);
} else if (msg.type === "error") {
this.onError(msg);
}
};
this.stream = await navigator.mediaDevices.getUserMedia({ audio: { channelCount: 1, sampleRate: 16000 } });
this.audioCtx = new (window.AudioContext || window.webkitAudioContext)({ sampleRate: 16000 });
const source = this.audioCtx.createMediaStreamSource(this.stream);
this.processor = this.audioCtx.createScriptProcessor(4096, 1, 1);
this.processor.onaudioprocess = (e) => {
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;
const input = e.inputBuffer.getChannelData(0);
const pcm16 = new Int16Array(input.length);
for (let i = 0; i < input.length; i++) {
const s = Math.max(-1, Math.min(1, input[i]));
pcm16[i] = s < 0 ? s * 0x8000 : s * 0x7FFF;
}
this.ws.send(pcm16.buffer);
};
source.connect(this.processor);
this.processor.connect(this.audioCtx.destination);
}
stop() {
if (this.processor) this.processor.disconnect();
if (this.audioCtx) this.audioCtx.close();
if (this.stream) this.stream.getTracks().forEach((t) => t.stop());
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
this.ws.send(JSON.stringify({ action: "stop" }));
}
}
}
D.HH:MM:SSDanh sách Bài Diễn thuyết Đã Tạo
| Tiêu đề & File Nguồn | Phong cách | Mô hình LLM | Diễn giả | Bản thu Âm thanh (Play & Tua) | Thời lượng | Quy mô | Ngày tạo | Thao tác |
|---|---|---|---|---|---|---|---|---|
| Đang tải danh sách bài diễn thuyết... | ||||||||