One of my partners is nearly blind and has trouble distinguishing between hearts and diamonds and between spades and clubs. Is it proper for me, as Dummy, to call out the cards as they are played on the table so the my partner leads the proper suit?
From the Laws of Rubber Bridge:
Law 42 – Dummy’s Rights Dummy is entitled to give information as to fact or Law but may not initiate the discussion.
So if declarer asks, dummy can say what suit was led. It looks like dummy can not do so without being asked, but I'd assume that if you explain the situation to your opponents (or a tournament judge), they'd allow you to dispense with the asking as long as you are consistent (e.g. naming the suit every time should be fine, but naming the suit sporadically might get you accused of some kind of signaling scheme).
Note that Law 42 for Duplicate Bridge is slightly less permissive; definitely clarify with your opponents first under those rules.
The laws are intended to handle normal circumstances. Common courtesy can deal with this situation, no matter the letter of the law.
I've been playing in ACBL tournaments for 40 years. No one has ever objected to the partner of a player with impaired vision calling out the cards, nor would I expect them to. As Benjamin notes, you should do it for every card, not just some of them.
If you're playing rubber bridge and your opponents object, find new opponents. But that would surprise me.
I played recently at an ACBL tournament where a pair had this exact problem. The partner with unimpaired eyesight announced each card as it was played, and read off the entire dummy as it came down. This was done on every play throughout the event. At the start of each round the pair explained this to the opponents -- except those who had faced this pair before, as I had. No one objected, and as a qualified director, I am confident that had anyone objected, the objection would have been denied by the director, unless the announcements had been made inconsistently so as to convey added information, or had been loud enough to be heard at other tables.