No, you aren't stupid. Decisions and actions can be stupid, but not people.
But you don't say why you didn't complete on time. If you were working on the project and it just didn't get done, then it is just the fact that such things are hard to estimate up front as you don't know what you will encounter along the way. However, if you just didn't do anything, then it isn't the same at all. But even in such a case there may be reasons that delayed you. Even just needing a break can be a valid reason for not making progress. Many people experience such periods.
There are many other valid reasons for not making progress. I don't know your situation, of course, but if you worked at it and got nowhere at all, that doesn't make you stupid. It makes you inexperienced, nothing more. You may have needed more direction than you were able to get. That is a shared defect in the system, not your fault. Lots of things can intervene in our good intentions.
Perhaps you have disappointed your professor, but on the other hand, you were volunteering your own time and effort in the first place. It isn't that you got something for which you didn't return value. Had you not volunteered in the first place everyone would be objectively in the same situation now. The work wasn't done and needs to be done by someone.
You can apologize, if you like, for not meeting your own goals, but just an explanation is the most that would be needed. But just "I wasn't able to spend the time and effort that I thought I would" is enough. But also expressing your desire to continue working with the prof would be a good thing to do. If he is disappointed then that is for him to deal with.
But this is also the sort of situation that is best resolved in person, rather than in email.