🔊 Sound Upload
Upload an audio file, get a direct link, and paste it into the audioUrl field of our Whisper (speech-to-text) or TTS actors on Apify.
Upload
Click or drop an audio file here
WAV (PCM) · max 5 minutes · max 25 MiB
WAV (PCM) · max 5 minutes · max 25 MiB
Your limits (IP)
Loading…
Rules
| Max clip length | 5 minutes |
| Per 10-minute window | 5 hours of audio |
| Per day | 24 hours of audio |
| Total per IP | 5 hours |
| Files auto-delete after | 7 days |
Hitting 80% of a quota shows a warning. Need more? Contact info@metanetsoft.com to have your IP whitelisted (limits disabled).
Then what?
Copy your link and run our actors:
Whisper Turbo Speech to Text → paste into audioUrl
API
No key needed — same limits as the page, per IP. Send the raw WAV body with a WAV content-type; the response is JSON with a ready-to-use url.
POST /api/upload → upload a WAV, returns {url, durationSeconds, bytes}
GET /api/usage → your remaining quota (JSON)
curl
curl -X POST https://soundupload.tr.foxtools.de/api/upload \
-H 'Content-Type: audio/wav' \
--data-binary @voice.wav
Python
import urllib.request, json
req = urllib.request.Request(
'https://soundupload.tr.foxtools.de/api/upload',
data=open('voice.wav','rb').read(),
headers={'Content-Type': 'audio/wav'})
r = json.loads(urllib.request.urlopen(req).read())
print(r['url']) # → paste into the actor's audioUrl
Node
const fs = require('fs');
const r = await fetch('https://soundupload.tr.foxtools.de/api/upload', {
method: 'POST',
headers: { 'Content-Type': 'audio/wav' },
body: fs.readFileSync('voice.wav'),
});
const { url } = await r.json();
Then feed the URL straight into the actor run API:
curl -X POST https://api.apify.com/v2/acts/myagizm~whisper-turbo-speech-to-text/runs?token=APIFY_TOKEN \
-H 'Content-Type: application/json' \
-d '{"audioUrl": "…from the upload above…"}'
Errors come back as JSON: {error, warning?, usage?} — 413 too large, 415 wrong type, 400 bad WAV/too long, 429 rate limited.
Contact
Questions, higher limits or IP whitelisting: info@metanetsoft.com