A good place to start.
Everything you need to contribute clean audio pairs, follow your uploads, and review the collection with confidence.
Welcome to the workspace.
Emarati Corpus brings original recordings and their transcripts into a shared, private collection. The default languages are Emarati and English.
- Ask your superadmin to create an account using your exact @xpin.ae work email and assign your language collections.
- Open Sign in and enter the temporary credentials shared privately with you.
- Set a personal password of at least 12 characters. This is required before entering the workspace.
- Open Upload audio to contribute, or Corpus library if you have review access.
Your first contribution.
- Choose Upload audio and select an assigned language.
- Add an optional batch name that helps your team recognize the recording session.
- Select or drag in your WAV/TXT pairs, ZIP archives, or a combination.
- Click Upload contribution. Keep the tab open until the transfer to the server finishes.
- Follow the batch in My uploads or Upload history. Once received, server-side validation and storage continue even if you leave the page.
A successful batch is marked Complete. Its recordings then appear in the admin library, and its audio hours and storage volume are added to the dashboard. A client can see their own receipts and totals.
session-01/ 001.wav 001.txt 002.wav 002.txt
Two files. One recording.
Every WAV needs a TXT with the same filename stem in the same relative folder. For example, 001.wav pairs with 001.txt. An unpaired item rejects the entire batch before storage begins.
| Rule | Accepted input |
|---|---|
| Audio | Uncompressed PCM or IEEE float WAV, 8–192 kHz, 1–8 channels |
| Transcript | Nonempty UTF-8 TXT, with an optional BOM |
| Bulk archive | ZIP with paired files; relative subfolders are preserved |
| Batch size | Up to 1,000 pairs and 1 GiB uploaded |
| Expanded size | Up to 2 GiB after ZIP expansion |
| Individual files | 256 MiB per WAV; 1 MiB per TXT |
| Combined transcripts | Up to 32 MiB per batch |
001.wav, provided each has its own matching TXT.Original audio is not transcoded. Original text and audio stay preserved after upload; no role can edit or delete them through this portal.
The right access for each role.
| Role | What you can do | Scope |
|---|---|---|
| Superadmin | Upload, review, export manifests, manage accounts and languages, inspect audit history | All collections |
| Admin | View contribution hours and volume; play audio, read text, approve or flag pairs; export manifests | Assigned languages |
| Client | Bulk upload; see your own receipts and totals; retry failed transfers | Upload to assigned languages; receipts for your own batches |
Superadmins manage language access in People & access. Changing access or deactivating an account ends its existing sessions. An inactive account's contribution history is preserved.
Listen, read, and verify.
- Open Corpus library. Filter by language, review status, filename, or contributor.
- Choose Review on a recording. Play its audio alongside the original transcript.
- Choose Approve pair when the audio and transcript match.
- Choose Needs attention for a mismatch or other issue. Add a note explaining what needs checking.
- Use Reset review to return a pair to pending. Every review change is recorded in the audit trail.
Export manifest downloads a CSV of the recordings you can access, including measured durations, review states, and storage references. It does not download the audio files themselves.
When something needs attention.
My batch says “Rejected”.
Read the error in your upload receipt. Common causes are a missing TXT partner, duplicate names, an invalid WAV, or a non-UTF-8 transcript. Correct the complete selection and submit a new batch. A validation-rejected batch has not been added to the corpus.
My batch says “Transfer failed”.
Open the receipt and choose Retry. The system uses the retained input files and recognizes objects already stored. It will not replace existing content. Check Service status if the failure persists.
The upload was interrupted.
If the browser lost its connection before receipt, retry the same selection in the same tab; its request identity prevents duplicate completed batches. If the receipt says staging was incomplete, submit the files as a new batch. After staging finishes, server-side work can resume following a service restart.
I cannot see a language or another person's uploads.
Clients only see their own receipts. Admins only see assigned languages. Ask your superadmin to check your role and language assignments in People & access, then sign in again if access was changed.
I forgot my password or cannot sign in.
Use your provisioned @xpin.ae email. Ask your superadmin to reset the account password if needed. After too many failed attempts, wait 15 minutes before trying again. Newly issued temporary passwords must be changed at sign-in.
The queue is full or there is not enough staging space.
Wait for an active batch to finish if the queue is busy. If staging space is unavailable, contact the workspace administrator. Original inputs and rejected submissions are retained; storage capacity may need to be expanded.
API reference.
The browser uses the same role-protected API. Authenticated writes require the current session cookie and the X-CSRF-Token returned by GET /api/me. Uploads also require a unique Idempotency-Key header of 16–100 letters, digits, hyphens, or underscores.
| Endpoint | Purpose |
|---|---|
POST /api/auth/login | Sign in with JSON email and password |
GET /api/me | Current user, scopes, CSRF token, upload limits |
GET /api/languages | Your active language collections |
POST /api/uploads | Multipart fields: language, optional label, repeated files |
GET /api/uploads | Role-scoped batch receipts; page parameter |
GET /api/clips | Admin library; language, status, search, page filters |
GET /api/clips/{id}/audio | Scoped audio stream with byte-range support |
POST /api/clips/{id}/review | JSON status and note; admin review permission required |
GET /api/public/status | Public, cached service connectivity report |
Never share session cookies, CSRF tokens, or account passwords. Storage credentials stay on the server.