{"record":{"id":"1241f3a7c03b3fb2","repo":"BerriAI/litellm","slug":"numpy-is-required-for-riva-audio-resampling-insta","errorCode":null,"errorMessage":"numpy is required for Riva audio resampling. Install Riva STT extras to enable automatic audio resampling: `pip install 'litellm[stt-nvidia-riva]'`","messagePattern":"numpy is required for Riva audio resampling\\. Install Riva STT extras to enable automatic audio resampling: `pip install 'litellm\\[stt-nvidia-riva\\]'`","errorType":"exception","errorClass":"NvidiaRivaException","httpStatus":500,"severity":"error","filePath":"litellm/llms/nvidia_riva/audio_transcription/audio_utils.py","lineNumber":53,"sourceCode":"\n@dataclass\nclass ResampledAudio:\n    pcm_bytes: bytes\n    duration_seconds: float\n    sample_rate_hz: int\n    num_channels: int\n\n\ndef resample_to_riva_pcm(file_bytes: bytes) -> ResampledAudio:\n    \"\"\"\n    Decode ``file_bytes`` and produce 16 kHz mono LINEAR_PCM (int16 little\n    endian) suitable for streaming to Riva, plus the audio duration in\n    seconds (used for cost calculation when Riva does not return usage).\n    \"\"\"\n    try:\n        import numpy as np\n    except ImportError as e:\n        raise NvidiaRivaException(\n            status_code=500,\n            message=f\"numpy is required for Riva audio resampling. {_INSTALL_HINT}\",\n        ) from e\n\n    samples_float, source_rate = _decode_to_float32(file_bytes)\n\n    # Downmix to mono by averaging channels.\n    if samples_float.ndim == 2 and samples_float.shape[1] > 1:\n        samples_float = samples_float.mean(axis=1)\n    elif samples_float.ndim == 2:\n        samples_float = samples_float[:, 0]\n\n    samples_float = np.asarray(samples_float, dtype=np.float32).ravel()\n\n    if source_rate != RIVA_TARGET_SAMPLE_RATE_HZ:\n        samples_float = _resample(samples_float, source_rate, RIVA_TARGET_SAMPLE_RATE_HZ)\n\n    # Clip + convert float [-1, 1] to int16 little-endian PCM.","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/llms/nvidia_riva/audio_transcription/audio_utils.py#L35-L71","documentation":"Raised by litellm's Riva audio utilities when numpy is not installed but automatic audio resampling to Riva's required 16 kHz mono PCM is needed. litellm keeps numpy out of core dependencies, so the Riva STT path raises this actionable ImportError wrapper pointing at the stt-nvidia-riva extra.","triggerScenarios":"Calling litellm.transcription() with an nvidia_riva/* model on an environment without numpy, with audio that is not already 16 kHz mono wav (forcing the resample path resample_to_riva_pcm).","commonSituations":"Slim docker images / serverless runtimes that omit numpy, fresh venvs installing litellm without extras, or upgrading litellm in a project that never needed numpy before.","solutions":["pip install 'litellm[stt-nvidia-riva]' which brings numpy plus audio decode deps.","Or pip install numpy directly if you only need resampling.","Alternatively pre-convert audio to 16 kHz mono wav so the resample path is skipped.","Rebuild your deployment image with the extra included."],"exampleFix":"# before: Dockerfile\nRUN pip install litellm\n\n# after\nRUN pip install 'litellm[stt-nvidia-riva]'","handlingStrategy":"validation","validationCode":"try:\n    import numpy  # noqa: F401\nexcept ImportError:\n    raise RuntimeError(\"Install 'litellm[stt-nvidia-riva]' before using Riva STT resampling\")","typeGuard":null,"tryCatchPattern":"from litellm.exceptions import APIError\ntry:\n    litellm.transcription(model=\"nvidia_riva/riva_asr\", file=f)\nexcept APIError as e:\n    if \"numpy is required\" in str(e):\n        raise RuntimeError(\"Environment missing dependency: pip install 'litellm[stt-nvidia-riva]'\" ) from e\n    raise","preventionTips":["Include the stt-nvidia-riva extra in the deployment's requirements from day one.","Alternatively pre-convert audio to 16 kHz mono wav to bypass resampling.","Add an import-time dependency check in service startup."],"tags":["nvidia-riva","audio-transcription","numpy","dependency","resampling"],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}