Soccer commentary plays a crucial role in enhancing the soccer game viewing experience for audiences. Previous studies in automatic soccer commentary generation typically adopt an end-to-end method to generate anonymous live text commentary. Such generated commentary is insufficient in the context of real-world live televised commentary, as it contains anonymous entities, context-dependent errors and lacks statistical insights of the game events.To bridge the gap, we propose GameSight, a two-stage model to address soccer commentary generation as a knowledge-enhanced visual reasoning task, enabling live-televised-like knowledgeable commentary with accurate reference to entities (players and teams). GameSight starts by performing visual reasoning to align anonymous entities with fine-grained visual and contextual analysis. Subsequently, the entity-aligned commentary is refined with knowledge by incorporating external historical statistics and iteratively updated internal game state information. Consequently, GameSight improves the player alignment accuracy by 18.5% on SN-Caption-test-align dataset compared to Gemini 2.5-pro. Combined with further knowledge enhancement, GameSight outperforms in segment-level accuracy and commentary quality, as well as game-level contextual relevance and structural composition. We believe that our work paves the way for a more informative and engaging human-centric experience with the AI sports application. All source code required for conducting and analyzing the experiments will be made publicly available upon publication of the paper.
Left (Sec.4.1): Human reliance for the “Player Guessing” game. Human participants have an accuracy of 96.3%, among which 84.5% of the correct identifications can be made through various cues other than long view player tracking, indicating the necessity of involving fine-grained visual and contextual information in player alignment.
Right: (Appendix C.2) Ablation test on the contextual and visual components. Most components contributes to the visual reasoning task positively, while the KetEvent Timeline component is excluded in the following entity alignment experiments.
Left: (Exp.1) Zero-shot test on the video-LMMs and LLMs. LLMs fall shorts of video-LMMs in this visual reasoning task, indicating the importance of involving visual modality to further observe the related scene. Qwen2.5-VL serves as the superior backbone for further fine-tuning.
Right: (Exp.2) Fine-tuning on Qwen2.5-VL. The synergy between SFT and GRPO proves crucial for addressing the multifaceted challenges of visual reasoning in video-LMMs, improving the player alignment accuracy by 18.5% on SN-Caption-test-align dataset compared to Gemini 2.5-pro.
Test set sample: [PLAYER] ([TEAM]) gets on the end of a pass on the edge of the box but his shot is blocked.
Train set sample: [PLAYER] ([TEAM]) goes over to take the corner kick and it looks like he will swing the ball into the penalty box.
| Video & Anonymized Commentary | Visual Reasoning for Entity Alignment |
|---|---|
|
[PLAYER] ([TEAM]) gets a shot away from around 24 metres out after his fine solo run. The ball went just wide of the right post!
(A good case by analyzing close view recognized face with player role.) |
Step 1: Video Grounding
The commentary event is described as occurring around 16:17 to 16:29 seconds in the video. The event involves a player from Barcelona taking a shot that goes wide of the goalpost. This suggests we need to focus on the Barcelona team's actions during this time frame. Step 2: Analyze the Attack and Defense Sides Given that the shot was taken by a Barcelona player, we need to identify who among their players fits the description of taking a shot. The Barcelona team has several attackers, including Lionel Messi (jersey number 10), Neymar (jersey number 11), and Luis Suarez (jersey number 9)✔️. Since the shot was taken from around 24 meters out, it is likely an attacking midfielder or forward who has possession and takes the shot. Step 3: Identify the Player Involved In the video, we see a player in a blue and red jersey (Barcelona) dribbling the ball towards the goal. This player is Neymar, as indicated by the close-up view showing his face and jersey number 11. The player's movement and positioning align with the description of taking a shot from a distance.✔️ Step 4: Context Knowledge Analysis From the history_timeline, we know that Lionel Messi was involved in an offside situation earlier. However, there is no direct evidence linking him to the shot described in the commentary. The close-up view of Neymar confirms his involvement in the event, as he is the only player from Barcelona seen in the close-up view during the relevant time frame.✔️ Final Deduction Based on the analysis, the player who took the shot and is mentioned in the commentary is Neymar from Barcelona. { "video_grounding": "16:17 - 16:29", "team": "Barcelona", "player_hash": "jNOPwl3h" , "player_name": "Neymar"} |
|
PLAYER] ([TEAM]) gets on the end of a pass on the edge of the box but his shot is blocked.
(A good case by observation in the long view and analyzing history timeline.) |
Step 1: Video Grounding
The commentary event is described as occurring around 15-17 seconds in the video. This is where the shot attempt is mentioned, and we need to focus on the scene around this time. Step 2: Analyze the Attack and Defense Sides The commentary mentions a "shot attempt" by a player from the home team, Paris SG. Given that Paris SG is playing against Arsenal, the attacking side would be Paris SG, and the defending side would be Arsenal. Therefore, the player who attempts the shot is more likely to be from Paris SG.✔️ Step 3: Identify the Player Involved In the video, around 15-17 seconds, there is a player in a blue jersey (Paris SG) who appears to be involved in an attacking play. This player is seen running towards the goal area with the ball. His jersey number is visible as 22, and his name is Jese,✔️ which matches the information given in the history_timeline. Step 4: Context Knowledge Analysis From the history_timeline, we know that Jese has been substituted into the game. This suggests he is actively participating in the match and is likely to be involved in significant plays, such as attempting shots on goal.✔️ Conclusion Based on the analysis, the player who conducted the shot attempt is Jese from Paris SG. His jersey number is 22, and his name is clearly identifiable in the video. {"video_grounding": "15-17", "team": "Paris SG", "player_hash": "6BdSXunk", "player_name": "Jese"} |
|
Poor challenge! [PLAYER] ([TEAM]) is penalised for tripping and [REFEREE] blows his whistle. [TEAM] win a free kick. It's a promising situation for a direct shot.
(A good case by analyzing close view recognized face with player role.) |
Step 1: Video Grounding
The commentary event is described as occurring around 14 19 21 27 29 seconds in the video. The closest grounded view to this time frame is around 22.52 seconds, where we see a close-up of a player wearing a white jersey. Step 2: Analyze the Attack and Defense Sides Given the context of the commentary, it mentions a foul that results in a free kick for the home team, Granada CF. This suggests that the player who committed the foul was likely from the opposing team, Real Madrid.✔️ The close-up view shows a player in a white jersey, which aligns with the away team's uniform. Step 3: Identify the Player Involved In the close-up view at 22.52 seconds, the player is wearing a white jersey. This player is identified as Pepe, who plays as a defender for Real Madrid. The close-up view confirms his identity, and he is the only player from Real Madrid visible in the close-up shots.✔️ Step 4: Context Knowledge Analysis The history_timeline indicates that a player from Real Madrid picked up a long through ball, but another player from the same team intercepted it. This suggests that players from Real Madrid were actively involved in the play leading up to the event. The close-up view of Pepe further supports his involvement in the event. Final Deduction Based on the close-up view and the context provided, the player who committed the foul is Pepe from Real Madrid. { "video_grounding": "22.52s", "team": "Real Madrid", "player_hash": "2y9qaipI", "player_name": "Pepe"} |
|
One of the defenders reacts at the last minute to brilliantly block a pass from [PLAYER] ([TEAM]).
(A bad case with wrong deduction.) |
Step 1: Video Grounding
The commentary event is described as occurring at around 14 15 16 29 seconds in the video. This suggests we need to focus on the scene where a defender reacts to block a pass from a player named [PLAYER]. Step 2: Analyze the Attack and Defense Sides Given that the event involves a defender blocking a pass, it's logical to look at the attacking side (Dortmund) and the defending side (Bayer Leverkusen). Since the defender is from Bayer Leverkusen, we need to identify who among their players fits the description of making a pass.✔️ Step 3: Identify the Player Involved In the video, we see a player in a red jersey (Bayer Leverkusen) passing the ball. The player's jersey number and name are visible, and he appears to be the one making the pass. The close-up view confirms that the player is indeed from Bayer Leverkusen, as indicated by the jersey color and design. Step 4: Context Knowledge Analysis From the history_timeline, we know that [PLAYER_O0EKKpNQ] received a yellow card for dissent.❌ The player's role as a midfielder suggests he could be involved in passing the ball. Final Deduction Based on the visual cues and the context provided, the player who made the pass and was blocked by a defender is identified as O0EKKpNQ from Bayer Leverkusen. { "video_grounding": "14 15 16 29", "team": "Bayer Leverkusen", "player_hash": "O0EKKpNQ" , "player_name": "Chicharito"} |
Left: (Exp.3) Commentary generation baseline comparison. GameSight shows competitive results using live text as GT, and outperforms others when using live televised as GT, showing a better alignment to the human-centric TV commentary.
Right: (Exp.5) Quantitative results in commentary analysis. GameSight provides not only contextually related, but also vivid and engaging commentary with knowledge-enhanced visual reasoning.
Left: (Exp.4) Knowledge reference accuracy. GameSight presents high accuracy when referring to both external and internal knowledge.
Right: (Exp.6) Commentary structural composition. Gamesight provides similar structural composition with professional live televised commentary by adding insightful explanations and comments.
| Entity-Aligned Commentary (MatchTime Dataset) |
Knowledge-Enhanced Commentary (GameSight) |
|---|---|
| Edinson Cavani (Paris SG) times his run too early and the linesman raises his flag for offside. | In the 52nd minute of the match, Edinson Cavani times his run too early, and the linesman raises his flag for offside. It’s a frustrating moment for the Paris SG forward, who has already found the net twice in this UEFA Champions League season. The away team will be hoping to capitalize on their attacking efforts as they trail 2-1 against Arsenal here at the Emirates Stadium. |
| Lucas (Paris SG) takes a mid-range free kick and his stunning strike crashes against the crossbar. | Lucas Moura steps up for a mid-range free kick, showcasing his trademark technique! He strikes it brilliantly, but it crashes against the crossbar, sending shockwaves through the Emirates Stadium. Paris SG is putting the pressure on Arsenal, as Lucas looks to add to his three goals this season. The score remains 1-1 here in the second half! |
| Willian (Chelsea) takes the resulting corner which is well defended. Chelsea will take a corner kick. | Willian steps up to take the corner for Chelsea after a well-defended sequence. They’ve been pressing hard, looking to extend their lead. The current score stands at 2-1 in favor of the visitors. The last corner was also for Chelsea, but they’ll look to make this one count at Carrow Road. Let’s see how Norwich’s defense responds! |
| Grzegorz Krychowiak (Sevilla) brings an opponent down and Svein Moen interrupts the game. | Grzegorz Krychowiak brings down an opponent, and referee Svein Moen swiftly halts play. It’s a strategic foul from the Sevilla midfielder as they look to regain control of the game. We’re now at 33 minutes and 38 seconds into the second half, with Sevilla trailing 1-3 against Manchester City. Krychowiak, who has already received a yellow card earlier, will need to be cautious for the remainder of the match. |
| Ramires (Chelsea) fouls his opponent and receives a yellow card from the referee, but he is clearly not happy with the decision. | As we approach the closing stages of the first half, Ramires from Chelsea commits a foul, much to his dismay, and is issued a yellow card by the referee. The Brazilian midfielder clearly disagrees with the decision as he gestures his frustration. Meanwhile, Southampton has already received two yellow cards in this match, with Ryan Bertrand and Sadio Mane already cautioned. The tension is palpable as Chelsea leads 1-0 following Willian’s early free-kick goal. |
| Franck Ribery (Bayern Munich) is shown a yellow card by the referee. | As we approach the midway point of the second half, Franck Ribery has just received a yellow card for Bayern Munich after a late challenge. This adds to the growing tension in this highly contested match at Signal Iduna Park, with Dortmund leading 1-0 following Pierre-Emerick Aubameyang’s opening goal in the first half. Ribery’s booking could have significant implications as both teams battle for control. This marks the third yellow card of the match, with Adrian Ramos and Marc Bartra already cautioned for Dortmund. The stakes are high as we inch closer to the final whistle. |
| Juanmi (Malaga) scores a goal! A perfectly produced cross puts him one-on-one with the goalkeeper and he plants a brilliant header down in the middle of the net, leaving the goalkeeper beaten! | Juanmi has found the back of the net for Malaga! At the 70th minute, a perfectly timed cross allows him to break free one-on-one with Iker Casillas. The young forward rises above the defenders to deliver a brilliant header down into the center of the goal, leaving the Real Madrid keeper with no chance. This goal comes as Malaga seeks to fight back after being two goals down. The score now stands at 2-1, and the home crowd at the Santiago Bernabéu is stunned! |
| Entity-Aligned Commentary (MatchTime Dataset) |
Knowledge-Enhanced Commentary (GameSight) |
|---|---|
| Matthias Ginter (Dortmund) can’t expect anything else than a yellow card for his hard tackle. And a yellow it is. Manuel Grafe didn’t think twice about pulling it out of his pocket. | Matthias Ginter of Dortmund has been booked, receiving a yellow card for a robust challenge. Referee Manuel Grafe didn’t hesitate to brandish the card, a clear indication of the game’s growing physicality. This marks another disciplinary action in what has been a fiercely contested encounter, with Leverkusen already having three yellow cards to their name. The score remains 1-0 to Bayer Leverkusen as we approach the half-time mark. (Forth yellow cards) |
| The game is interrupted as Cristiano Ronaldo (Real Madrid) is flagged offside. | The game takes a brief pause as Cristiano Ronaldo is caught offside, just as Real Madrid was looking to capitalize on their significant lead here at the Santiago Bernabéu. With the score at 4-1 and about a minute to go until halftime, the home side has controlled the play and maintains 62% possession. This offside decision serves as a reminder for Madrid to be mindful of their positioning as they continue to push for more goals. (Hallucination, we don’t have ball possession information.) |
| Arjen Robben (Bayern Munich) delivers a low pass into the box which is intercepted. The referee and his assistant both point at the corner flag. Bayern Munich will have an opportunity to threaten the opposition’s goal. | Arjen Robben weaves into the box and delivers a low pass towards the goal, but it’s intercepted by the FC Köln defense. However, the referee swiftly points to the corner flag—Bayern Munich will have a corner kick, their fifth of the match so far. With the score at 1-0, Bayern is looking to further capitalize on their attacking momentum here at the Allianz Arena. (Sixth corner kicks.) |
| Goal! Neymar (Barcelona) slams home the penalty with a precise shot which goes inside the right post. | And there it is! Goal! Neymar steps up to take the penalty and finishes with tremendous precision, slamming the ball home just inside the right post. That’s a crucial strike for Barcelona as they extend their lead to 4-1 against Paris SG. The home crowd at Camp Nou erupts! This is Neymar’s second goal of the match, following his earlier stunning free kick. Just what Barcelona needed as they push for a commanding victory in this Champions League clash! (Score should be updated to 5-1.) |