Doxygen pulls everything out of the code and works fully automatic AFAIK.
sphynx works on a bit more semiautomatic way (which leads to way prettier and better understandable documentation). You can have a class or a function be autodocumented, but you can also easily drop unneeded functions that draw attention away from how the code really works, or from API that is supposed to be non-public. You can easily reorder the way functions are listed, you can add introductory (or inbetween) text and comments.
Sphynx can provide more of a reference book with a structure that you can decide on, yet it pulls out as much (or little) autodocumentation from out of the source code, so you don't have to duplicate documentation.