This is more a matter of connotation than definition.
A talk (or sometimes "presentation") is usually more casual, with more chances of audience interaction, and often focused on transmitting technical information to the audience.
A speech (or "address") is generally a more formal event that conveys the speaker's intentions or desires without defining specific actions, and doesn't allow for much or any audience commentary.
There isn't a sharp dividing line, though, and many talks don't take audience questions, while many speeches end with a question session. Some events could be described either way.
As an example, if a guest speaker is brought in to explain the plans for how to repair a damaged bridge, that's likely to be referred to as a talk. If a guest speaker is brought in to talk about what he wants to do to improve the city's economy, that's likely to be called a speech. For a speaker who comes in to explain their proposed plan for building a new highway, especially if the plan has not yet been approved, it could be either one.
I feel today there's a tendency to try to avoid the word 'speech' whenever possible, because speeches have a reputation for being long and boring, while talks are seen as engaging and interactive (even when they aren't). Another common term that gets thrown around today in lieu of 'speech' is "town hall meeting", which suggests that everyone will get to say their piece, even though it usually doesn't allow any audience interaction at all.