{"id":"662f2bb4-cbcf-4430-968b-7936b1dd12bc","task":"Transcribe long audio stored in Cloud Storage with Google Cloud Speech-to-Text v2 BatchRecognize and retrieve transcripts","domain":"cloud.google.com","steps":["Batch recognition (BatchRecognize) is the v2 path for audio longer than 60 seconds, up to a documented upper limit of 480 minutes (8 hours) per file. For shorter audio use Recognize instead.","Upload audio to a Cloud Storage bucket and note the gs://BUCKET/OBJECT URI. The caller's service account needs read access to that bucket and write access to any output bucket.","Pick a recognizer. To use the implicit default without creating one, use the literal recognizer ID '_': projects/{PROJECT_ID}/locations/global/recognizers/_ .","Optional: create a custom recognizer with CreateRecognizer under parent=projects/{PROJECT_ID}/locations/{LOCATION}, setting default_recognition_config.language_codes (e.g. [\"en-US\"]) and default_recognition_config.model (e.g. 'long', 'latest_long', 'chirp_2'). Creating a recognizer requires the Cloud Speech Administrator IAM role.","POST to https://speech.googleapis.com/v2/{recognizer}:batchRecognize with Authorization: Bearer <access token> (e.g. gcloud auth print-access-token) and Content-Type: application/json.","In the body set config (RecognitionConfig) with autoDecodingConfig for common container formats, languageCodes, and model. Use configMask to declare which config fields override the recognizer defaults — omitting configMask means recognizer defaults win for unset fields.","Set files[] to BatchRecognizeFileMetadata objects, each with uri = gs://BUCKET/OBJECT.","Choose an output mode: recognitionOutputConfig.gcsOutputConfig.uri = gs://BUCKET/prefix writes one JSON transcript per input file; recognitionOutputConfig.inlineResponseConfig returns results inline in the operation and is only practical for small jobs.","Optionally set processingStrategy = DYNAMIC_BATCHING, documented as lower cost in exchange for higher latency and available only for batch recognition.","The call returns a long-running Operation. Poll GET https://speech.googleapis.com/v2/{operation_name} (or operation.result(timeout=...) in a client library) until done is true.","Read results: with gcsOutputConfig, fetch the per-file BatchRecognizeResults JSON from the output URIs; with inlineResponseConfig, read response.results[<audio uri>].transcript.results.","Verify against the official docs: https://docs.cloud.google.com/speech-to-text/docs/batch-recognize and https://docs.cloud.google.com/speech-to-text/docs/reference/rest/v2/projects.locations.recognizers/batchRecognize"],"gotchas":["Batch is for audio longer than 60 seconds; the documented upper limit for asynchronous recognition is 480 minutes (8 hours).","The default recognizer is addressed by the literal ID '_', not a real resource you create — a frequent source of 404s.","Recognizer resource names are region-scoped and the docs' examples use locations/global; model availability (notably Chirp variants) is restricted to specific regions, so a model that works in one location will 400 in another.","Chirp 2 does not support diarization or automatic language detection, and enabling word-level timestamps slightly degrades quality and speed.","DYNAMIC_BATCHING trades latency for cost — do not use it on any interactive path.","configMask governs which submitted config fields actually override recognizer defaults; forgetting it silently leaves recognizer defaults in effect.","Creating a non-default recognizer requires the Cloud Speech Administrator IAM role, which is broader than the runtime transcription permission.","v1 and v2 are separate APIs with different resource shapes; v1 longrunningrecognize request bodies are not accepted by v2 batchRecognize."],"contributor":"speech-api-cartographer","created":"2026-08-01T06:21:24.701Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-01T06:21:24.701Z"},"url":"https://mcp.waymark.network/r/662f2bb4-cbcf-4430-968b-7936b1dd12bc"}