{"library":"pyannote-database","title":"pyannote.database","description":"pyannote.database is an open-source Python library that provides a common interface for reproducible experimental protocols across various multimedia databases (audio, video, text). It is part of the broader pyannote ecosystem. Currently at version 6.1.1, the library maintains an active development pace with several releases annually, including significant major version updates that introduce breaking changes.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install pyannote-database"],"cli":null},"imports":["from pyannote.database import registry","from pyannote.database import FileFinder","from pyannote.database import ProtocolFile","protocol = registry.get_protocol('MyDatabase.MyProtocol')"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pathlib import Path\nfrom pyannote.database import registry, FileFinder\n\n# 1. Define your database protocol in a YAML file (e.g., database.yml)\n# This example creates dummy files for demonstration purposes.\n(Path(\"data\") / \"train.lst\").parent.mkdir(parents=True, exist_ok=True)\n(Path(\"data\") / \"train.lst\").write_text(\"dummy_file_1\\ndummy_file_2\\n\")\n\nconfig_content = \"\"\"\nProtocols:\n  MyDatabase:\n    MyProtocol:\n      train:\n        uri: data/train.lst\n\"\"\"\nPath(\"database.yml\").write_text(config_content)\n\n# 2. Load the database configuration into the registry\n# In a real scenario, you'd provide the actual path to your database.yml\n# For demonstration, we ensure our dummy config is found.\nos.environ[\"PYANNOTE_DATABASE_CONFIG\"] = str(Path(\"database.yml\").resolve())\nregistry.load_database(\"database.yml\")\n\n# 3. Access a specific protocol\n# Use FileFinder as a preprocessor to resolve file paths for 'audio' or similar keys.\npreprocessors = {'audio': FileFinder()}\nprotocol = registry.get_protocol(\"MyDatabase.MyProtocol\", preprocessors=preprocessors)\n\n# 4. Iterate over a subset (e.g., 'train') of the protocol\nprint(\"Iterating over training files:\")\nfor current_file in protocol.train():\n    print(f\"  URI: {current_file['uri']}\")\n    # In a real application, current_file['audio'] would resolve to the media file path,\n    # and current_file['annotation'] would provide temporal annotations.\n    # For this dummy example, 'audio' will not resolve to a real file path\n    # unless actual dummy audio files are created.\n\n# 5. Clean up dummy files (not needed in a real application)\nPath(\"database.yml\").unlink()\n(Path(\"data\") / \"train.lst\").unlink()\nPath(\"data\").rmdir()","lang":"python","description":"This quickstart demonstrates how to define a simple database protocol using a YAML configuration file, load it into the `pyannote.database` registry, and then iterate over a protocol subset to access multimedia resources and their associated metadata. It highlights the use of `registry.load_database` and `FileFinder`.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"5.1.3","pypi_latest":"6.1.1","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":9,"avg_import_s":1.33,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.12,"mem_mb":30.5,"disk_size":"167.8M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.24,"mem_mb":30.5,"disk_size":"167.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.7,"import_time_s":0.85,"mem_mb":30.5,"disk_size":"161M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.01,"mem_mb":30.5,"disk_size":"161M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.56,"mem_mb":35.4,"disk_size":"180.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.71,"mem_mb":35.3,"disk_size":"180.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.4,"import_time_s":1.39,"mem_mb":35.4,"disk_size":"173M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.81,"mem_mb":35.3,"disk_size":"173M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.28,"mem_mb":34.5,"disk_size":"166.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.41,"mem_mb":34.4,"disk_size":"165.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.6,"import_time_s":1.56,"mem_mb":34.5,"disk_size":"159M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.89,"mem_mb":34.4,"disk_size":"158M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.24,"mem_mb":34.3,"disk_size":"164.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.27,"mem_mb":34.2,"disk_size":"164.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.2,"import_time_s":1.37,"mem_mb":34.3,"disk_size":"158M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.92,"mem_mb":34.2,"disk_size":"157M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.01,"mem_mb":30,"disk_size":"325.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.99,"mem_mb":30,"disk_size":"325.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14.3,"import_time_s":1.06,"mem_mb":30,"disk_size":"318M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyannote-database","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.96,"mem_mb":30,"disk_size":"318M"}]}}