Okay, my design is as follows:
Table: Player
ID|Username|Password|email|Xp|AP|X|Y etc.
Table: Speech lists
Player.ID|Speech.speechID
Table: Speech
speechID|Time|Speaker|Text
Player contains the basic info about each user.
Speech lists contains, quite simply, a list of which player has heard which speech.
And finally, Speech contains the time something was said, who said it, and what it was that was said.
As far as I can see, this is normalized as much as possible.