Blender keyframe metadata
Blender provides property definitions that we can use to add custom properties to objects and bones. You will then want to define a panel that displays the property so that you can easily edit it.

As we can't animate strings I expect you will need to use a collection to define a string and frame number or range of frames that it will be applied to. Another option may be to assign a number to each sound and animate a custom integer. You can use an EnumProperty to create a menu that lists available sounds but stores a numeric value instead of a string.