Recording · Day 1

Public Hearing Meeting of Council

Technical details
Recording ID 843
Meeting ID 66
File path 17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv
Recording information
Status
Completed
Duration
8h9m
Start time
2026-01-20 14:30
End time
2026-01-21 05:39
Extract audio
Extract WAV audio for transcription and diarization
Storage & files
File type Storage Path / Key Status Action
Video S3 17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv Exists
Transcript S3 07ff719a-2230-4e78-af89-e7e4aa3cdebb.json Exists
WAV S3 6a8bd9f9-6841-426f-8a29-497658234d7d.wav Exists
Diarization Pyannote S3 b946e2d6-207e-4cbf-91a7-d56ca7142b7b.json Exists
Diarization Gemini S3 29ba5408-65f3-4005-9acb-c2bbcd081ca2.json Exists
Diarization Consolidated S3 971eb2ea-f9a6-4b22-81e6-8ac22f37a8c4.json Exists
Transcription progress
Completed
Loading transcription status…
Full recording transcript and speaker diarization data available for download.
Gemini-refined · speaker labels improved with AI using meeting agenda context
Processing logs
172 entries 2 errors 67 warnings
17:20:44 [INFO] Consolidation completed: 770 segments (reduced from 2477)
17:20:44 [INFO] {"step": "consolidation", "status": "completed", "updated_at": "2026-06-29T11:20:44.825530-06:00", "consolidated_path": "29ba5408-65f3-4005-9acb-c2bbcd081ca2.diarization.consolidated.json", "stats": {"original_segment_count": 2477, "consolidated_segment_count": 770, "reduction_percent": 68.91}}
17:20:44 [INFO] {"step": "consolidation", "status": "processing", "updated_at": "2026-06-29T11:20:44.412270-06:00"}
17:20:44 [INFO] Speaker refinement completed
17:20:44 [INFO] {"step": "gemini", "status": "completed", "updated_at": "2026-06-29T11:20:44.395684-06:00", "output_path": "/tmp/tmpo9w_zyad.json"}
17:20:44 [INFO] ================================================================================
17:20:44 [INFO] CHUNKING COMPLETE: Successfully merged all 2 chunks in 162.8s
17:20:44 [INFO] ================================================================================
17:20:44 [INFO] ✓ Unique speaker mappings discovered: 22
17:20:44 [INFO] ✓ Speakers: 11 named, 48 generic
17:20:44 [INFO] ✓ Segment count: 2477/2477
17:20:44 [WARNING] Large gap detected at segment 2461: 29242.525s -> 29256.365s
17:20:44 [WARNING] Large gap detected at segment 2384: 28724.365s -> 28729.605s
17:20:44 [WARNING] Large gap detected at segment 2312: 27966.105s -> 27977.825s
17:20:44 [WARNING] Large gap detected at segment 2304: 27933.485s -> 27941.605s
17:20:44 [WARNING] Large gap detected at segment 2303: 27912.585s -> 27931.965s
17:20:44 [WARNING] Large gap detected at segment 2171: 26607.145s -> 26612.645s
17:20:44 [WARNING] Large gap detected at segment 2131: 26139.245s -> 26147.305s
17:20:44 [WARNING] Large gap detected at segment 2109: 25929.965s -> 25936.605s
17:20:44 [WARNING] Large gap detected at segment 2106: 25915.305s -> 25925.205s
17:20:44 [WARNING] Large gap detected at segment 2080: 25783.025s -> 25788.745s
17:20:44 [WARNING] Large gap detected at segment 2078: 25770.565s -> 25775.785s
17:20:44 [WARNING] Large gap detected at segment 2077: 25761.305s -> 25768.685s
17:20:44 [WARNING] Large gap detected at segment 2065: 25598.185s -> 25606.205s
17:20:44 [WARNING] Large gap detected at segment 2064: 25591.825s -> 25597.285s
17:20:44 [WARNING] Large gap detected at segment 2057: 25560.265s -> 25566.465s
17:20:44 [WARNING] Large gap detected at segment 2050: 25536.945s -> 25543.525s
17:20:44 [WARNING] Large gap detected at segment 2014: 25238.345s -> 25243.545s
17:20:44 [WARNING] Large gap detected at segment 1876: 24025.205s -> 24037.725s
17:20:44 [WARNING] Large gap detected at segment 1874: 24000.525s -> 24011.105s
17:20:44 [WARNING] Large gap detected at segment 1836: 21797.745s -> 23786.145s
17:20:44 [WARNING] Large gap detected at segment 1833: 21769.625s -> 21776.305s
17:20:44 [WARNING] Large gap detected at segment 1830: 21755.885s -> 21766.665s
17:20:44 [WARNING] Large gap detected at segment 1732: 20746.365s -> 20755.925s
17:20:44 [WARNING] Large gap detected at segment 1676: 20397.945s -> 20414.025s
17:20:44 [WARNING] Large gap detected at segment 1674: 20383.385s -> 20393.865s
17:20:44 [WARNING] Large gap detected at segment 1633: 19690.665s -> 19707.865s
17:20:44 [WARNING] Large gap detected at segment 1590: 19521.925s -> 19528.445s
17:20:44 [WARNING] Large gap detected at segment 1578: 19466.065s -> 19472.385s
17:20:44 [WARNING] Large gap detected at segment 1566: 19390.265s -> 19407.045s
17:20:43 [WARNING] Large gap detected at segment 1490: 18618.965s -> 18633.425s
17:20:43 [WARNING] Large gap detected at segment 1423: 18010.785s -> 18030.045s
17:20:43 [WARNING] Large gap detected at segment 1074: 15781.405s -> 15799.265s
17:20:43 [WARNING] Large gap detected at segment 1073: 15773.005s -> 15778.505s
17:20:43 [WARNING] Large gap detected at segment 1024: 15418.605s -> 15424.405s
17:20:43 [WARNING] Large gap detected at segment 964: 14938.125s -> 14953.325s
17:20:43 [WARNING] Large gap detected at segment 911: 9820.145s -> 14639.185s
17:20:43 [WARNING] Large gap detected at segment 905: 9773.865s -> 9791.945s
17:20:43 [WARNING] Large gap detected at segment 879: 9417.605s -> 9422.725s
17:20:43 [WARNING] Large gap detected at segment 827: 8810.465s -> 8818.785s
17:20:43 [WARNING] Large gap detected at segment 741: 8202.965s -> 8213.765s
17:20:43 [WARNING] Large gap detected at segment 685: 7263.585s -> 7271.525s
17:20:43 [WARNING] Large gap detected at segment 654: 7003.585s -> 7010.265s
17:20:43 [WARNING] Large gap detected at segment 650: 6967.365s -> 6985.445s
17:20:43 [WARNING] Large gap detected at segment 638: 6896.105s -> 6901.145s
17:20:43 [WARNING] Large gap detected at segment 611: 6515.705s -> 6520.765s
17:20:43 [WARNING] Large gap detected at segment 607: 6500.905s -> 6509.345s
17:20:43 [WARNING] Large gap detected at segment 543: 5905.805s -> 5916.885s
17:20:43 [WARNING] Large gap detected at segment 521: 5649.705s -> 5658.105s
17:20:43 [WARNING] Large gap detected at segment 473: 5192.325s -> 5201.025s
17:20:43 [WARNING] Large gap detected at segment 458: 5113.665s -> 5119.425s
17:20:43 [WARNING] Large gap detected at segment 454: 5093.505s -> 5104.525s
17:20:43 [WARNING] Large gap detected at segment 446: 5064.905s -> 5071.045s
17:20:43 [WARNING] Large gap detected at segment 270: 3397.185s -> 3413.505s
17:20:43 [WARNING] Large gap detected at segment 261: 3299.365s -> 3305.925s
17:20:43 [WARNING] Large gap detected at segment 212: 2502.525s -> 2512.785s
17:20:43 [WARNING] Large gap detected at segment 196: 2116.265s -> 2148.485s
17:20:43 [WARNING] Large gap detected at segment 193: 2094.425s -> 2108.885s
17:20:43 [WARNING] Large gap detected at segment 177: 1997.005s -> 2003.485s
17:20:43 [WARNING] Large gap detected at segment 165: 1868.345s -> 1874.605s
17:20:43 [WARNING] Large gap detected at segment 89: 1251.385s -> 1278.525s
17:20:43 [WARNING] Large gap detected at segment 67: 1106.725s -> 1141.625s
17:20:43 [WARNING] Large gap detected at segment 57: 1073.145s -> 1082.125s
17:20:43 [WARNING] Large gap detected at segment 56: 1060.725s -> 1071.665s
17:20:43 [WARNING] Large gap detected at segment 53: 1023.425s -> 1058.565s
17:20:43 [WARNING] Large gap detected at segment 51: 1001.765s -> 1008.685s
17:20:43 [WARNING] Large gap detected at segment 35: 844.665s -> 860.265s
17:20:43 [INFO] VALIDATING MERGED RESULT
17:20:43 [INFO] --------------------------------------------------------------------------------
17:20:43 [DEBUG] Saved chunk 2 state to database
17:20:43 [INFO] Chunk 2: ✓ Refined successfully. Total speaker mappings: 22
17:20:43 [INFO] Chunk 2: Added 11 new speaker mappings. Total: 22
17:20:43 [INFO] Chunk 2: Gemini returned 33 speakers (7 refined: Councillor A. Chabot, Councillor A. Yule, Councillor D. McLean, Councillor L. Johnston, Councillor M. Atkinson, Councillor M. Jamieson, Mayor J. Farkas)
17:20:43 [INFO] Chunk 2: Successfully refined 202 segments with sparse mapping
17:20:43 [INFO] Saved parsed JSON: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug/chunk_002_parsed.json
17:20:43 [INFO] Saved chunk response: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug/chunk_002_response.txt
17:20:43 [INFO] Chunk 2: Gemini finish_reason: FinishReason.STOP
17:20:43 [INFO] Chunk 2: Received Gemini API response in 89.2s
17:19:14 [INFO] Chunk 2: Starting Gemini API call (model: gemini-2.5-pro, prompt length: 163274 chars)...
17:19:14 [INFO] Saved chunk input: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug/chunk_002_input.json
17:19:14 [INFO] Time range: 18881.6s - 29317.6s
17:19:14 [INFO] Processing chunk 2/2 (949 segments)
17:19:14 [INFO] --------------------------------------------------------------------------------
17:19:14 [DEBUG] Saved chunk 1 state to database
17:19:14 [INFO] Chunk 1: ✓ Refined successfully. Total speaker mappings: 21
17:19:14 [INFO] Chunk 1: Added 21 new speaker mappings. Total: 21
17:19:14 [INFO] Chunk 1: Gemini returned 46 speakers (9 refined: City Clerk K. Martin, Councillor A. Chabot, Councillor D. McLean, Councillor D.J. Kelly, Councillor H. Clark, Councillor K. Tyers, Councillor L. Johnston, Councillor M. Atkinson, Councillor M. Jamieson)
17:19:14 [INFO] Chunk 1: Successfully refined 43 segments with sparse mapping
17:19:14 [INFO] Saved parsed JSON: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug/chunk_001_parsed.json
17:19:14 [INFO] Saved chunk response: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug/chunk_001_response.txt
17:19:14 [INFO] Chunk 1: Gemini finish_reason: FinishReason.STOP
17:19:14 [INFO] Chunk 1: Received Gemini API response in 72.8s
17:18:01 [INFO] Chunk 1: Starting Gemini API call (model: gemini-2.5-pro, prompt length: 251009 chars)...
17:18:01 [INFO] Saved chunk input: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug/chunk_001_input.json
17:18:01 [INFO] Time range: 659.6s - 18879.5s
17:18:01 [INFO] Processing chunk 1/2 (1528 segments)
17:18:01 [INFO] --------------------------------------------------------------------------------
17:18:01 [INFO] Prior run found but no chunks completed. Starting from chunk 1/2
17:18:01 [INFO] Chunk tracking initialized in database
17:18:01 [INFO] Creating chunk tracking records for 2 chunks
17:18:01 [INFO] Split into 2 chunks
17:18:01 [INFO] ================================================================================
17:18:01 [INFO] Councillor R. Ward, Councillor A. Yule, Councillor J. Pantazopoulos, Councillor M. Jamieson, Councillor H. Clark, Councillor R. Dhaliwal, Councillor M. Atkinson, Councillor K. Tyers, Councillor D.J. Kelly, Councillor A. Chabot, Councillor N. Schmidt, Councillor J. Wyness, Councillor L. Johnston, Councillor D. McLean, Mayor J. Farkas, Chief Administrative Officer D. Duckworth, Chief Operating Officer S. Dalgleish, City Solicitor and General Counsel J. Floen, A/Chief Financial Officer A. Brown, General Manager C. Arthurs, General Manager K. Black, A/General Manager T. McLeod, General Manager M. Thompson, General Manager D. Hamilton, Assistant City Solicitor T. Wobeser, Manager C. Lee, City Clerk K. Martin, Leader, Legislative Services M. A. Cario, Senior Legislative Specialist K. Picketts, Senior Legislative Specialist C. Doi, Commander (Colonel), 41 Canadian Brigade Group Kyle Clapperton, Sergeant-Major (Chief Warrant Officer), 41 Canadian Brigade Group Ted Coderre, Commanding Officer (Lieutenant-Colonel), Calgary Highlanders Mike MacKillop, Regimental Sergeant-Major (Chief Warrant Officer), Calgary Highlanders William Klein, Commanding Officer (Lieutenant-Colonel), King’s Own Calgary Regiment John Fisher, Regimental Sergeant-Major (Master Warrant Officer), King’s Own Calgary Regiment Kevin Fensom, Dr. / Order of Canada Recipient Karl Tomm, Speaker (Horizon Land Surveys) Lei Wang, Speaker Yu Du, Teacher (Woodlands School) Cindy Nicolaou
17:18:01 [INFO] ================================================================================
17:18:01 [INFO] CHUNKING STRATEGY: Speaker list being used:
17:18:01 [INFO] ================================================================================
17:18:01 [INFO] CHUNKING: Processing 2477 segments in chunks of 1500
17:18:01 [INFO] ================================================================================
17:18:01 [WARNING] Creating debug folder: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.gemini_debug. These folders are not auto-cleaned. Clean up with: rm -rf *.gemini_debug/
17:18:01 [INFO] Large meeting detected (2477 segments). Using chunking strategy.
17:18:01 [INFO] Starting speaker refinement
17:17:59 [INFO] Cleanup completed: 160 segments corrected
17:17:59 [INFO] {"step": "cleanup", "status": "completed", "updated_at": "2026-06-29T11:17:59.978008-06:00", "applied_count": 160}
17:17:59 [INFO] {"step": "cleanup", "status": "processing", "updated_at": "2026-06-29T11:17:59.473533-06:00"}
17:17:59 [INFO] Starting name cleanup step
17:17:59 [INFO] Diarization completed and attached: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.diarization.pyannote.json
17:17:59 [INFO] Diarization completed successfully!
17:17:59 [INFO] {"step": "diarization", "status": "completed", "updated_at": "2026-06-29T11:17:59.405733-06:00", "output_path": "/tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.diarization.pyannote.json"}
17:17:57 [INFO] Extracted 2477 turn-based segments
17:17:57 [INFO] Diarization results saved to /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.mkv.diarization.pyannote.json
17:17:57 [INFO] Job completed! Retrieving results...
17:17:57 [INFO] Job status: completed
17:17:57 [INFO] Speaker diarization completed
17:17:57 [INFO] Speaker diarization completed
17:17:56 [INFO] Poll #1: Status: succeeded
17:17:44 [INFO] Diarization job started (Job ID: 8077ff1e-a197-4fb7-9e8e-3f4492c37e8e). Processing audio...
17:17:44 [INFO] Job 8077ff1e-a197-4fb7-9e8e-3f4492c37e8e already completed. Using existing results.
17:17:41 [INFO] Found existing pyannote job (ID: 8077ff1e-a197-4fb7-9e8e-3f4492c37e8e). Checking status...
17:17:41 [INFO] Found existing pyannote job (ID: 8077ff1e-a197-4fb7-9e8e-3f4492c37e8e). Checking status...
17:17:41 [INFO] Starting speaker diarization via pyannote.ai API
17:17:41 [INFO] Starting speaker diarization via pyannote.ai API
17:17:37 [INFO] Using S3 pre-signed URL for diarization
17:17:37 [INFO] {"step": "diarization", "status": "processing", "updated_at": "2026-06-29T11:17:37.155746-06:00"}
17:17:37 [INFO] Starting transcription + diarization
17:17:37 [INFO] Audio extracted and attached: /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.wav
17:17:37 [INFO] {"step": "extraction", "status": "completed", "updated_at": "2026-06-29T11:17:37.144165-06:00", "wav_path": "/tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.wav"}
17:17:23 [INFO] Audio extracted to /tmp/tmpbb2p3o0d/17d302e6-b097-4643-b2f8-3aed9e198bc7.wav
17:14:47 [INFO] Extracting audio to WAV format
17:14:47 [INFO] Extracting audio to WAV format
17:14:47 [INFO] {"step": "extraction", "status": "processing", "updated_at": "2026-06-29T11:14:47.916584-06:00"}
17:14:47 [INFO] Starting audio extraction
17:14:05 [INFO] Downloading video from S3 for processing
17:02:48 [INFO] Job submitted successfully via webhook. Returning early.
17:02:47 [INFO] Webhooks enabled: https://ccai-api.pixeltree.ca/api/webhooks/pyannote
17:02:47 [INFO] Submitting diarization + transcription job to pyannote.ai (URL: https://ccai-prod.s3.amazonaws.com/76b7a81e-7e77-484e-aa13-0cdbb93664b7.wav?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQK6LNXA7XP5KSEWG%2F20260629%2Fca-central-1%2Fs3%2Faws4_request&X-Amz-Date=20260629T170247Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=32c10b9d8a1b21b7ae133468eb3619b6dbcfaadccc1aea8d53a6a6143e376c74)
17:02:47 [INFO] Starting speaker diarization via pyannote.ai API
17:02:47 [INFO] Starting speaker diarization via pyannote.ai API
17:02:47 [INFO] Using S3 pre-signed URL for diarization
17:02:47 [INFO] {"step": "diarization", "status": "processing", "updated_at": "2026-06-29T11:02:47.563944-06:00"}
17:02:47 [INFO] Starting transcription + diarization
17:02:47 [INFO] Audio extracted and attached: /tmp/tmpqxhfv64j/17d302e6-b097-4643-b2f8-3aed9e198bc7.wav
17:02:47 [INFO] {"step": "extraction", "status": "completed", "updated_at": "2026-06-29T11:02:47.552574-06:00", "wav_path": "/tmp/tmpqxhfv64j/17d302e6-b097-4643-b2f8-3aed9e198bc7.wav"}
17:02:36 [INFO] Audio extracted to /tmp/tmpqxhfv64j/17d302e6-b097-4643-b2f8-3aed9e198bc7.wav
17:00:00 [INFO] Extracting audio to WAV format
17:00:00 [INFO] Extracting audio to WAV format
17:00:00 [INFO] {"step": "extraction", "status": "processing", "updated_at": "2026-06-29T11:00:00.215801-06:00"}
17:00:00 [INFO] Starting audio extraction
16:59:28 [INFO] Downloading video from S3 for processing
21:52:24 [INFO] Download completed successfully
21:48:02 [INFO] Manual retry initiated by user
16:52:26 [ERROR] Step full failed: Recording 843 has no file path
16:41:33 [ERROR] Step full failed: Recording 843 has no file path