Faits: Faits: A. A deux reprises, X._ a entretenu des relations sexuelles non protégées avec Y._, sans la prévenir qu'il était porteur du virus HIV. Il l'a également menacée de la "crever". Par jugement du 20 février 2004, le Tribunal correctionnel de l'arrondissement de Lausanne a reconnu X._ coupable de menaces et l'a condamné de ce fait à une amende de 300 fr. Il l'a libéré des chefs de crime manqué de lésions corporelles graves et de délit manqué de propagation d'une maladie de l'homme. Par jugement du 20 février 2004, le Tribunal correctionnel de l'arrondissement de Lausanne a reconnu X._ coupable de menaces et l'a condamné de ce fait à une amende de 300 fr. Il l'a libéré des chefs de crime manqué de lésions corporelles graves et de délit manqué de propagation d'une maladie de l'homme. B. Le 9 mars 2004, X._ a présenté au Tribunal d'accusation du Tribunal cantonal du canton de Vaud une demande d'indemnité au sens de l'art. 163a CPP/VD, aux termes duquel l'inculpé et l'accusé libérés des fins de la poursuite pénale, qui ne l'ont ni provoquée ni compliquée fautivement, peuvent obtenir de l'Etat, du plaignant ou de la partie civile une indemnité équitable pour le préjudice résultant de l'instruction et pour leur frais de défense. Le 9 juin 2004, le Tribunal d'accusation a rejeté la requête. Il a considéré que X._ savait qu'il était séropositif, qu'il n'en avait pas averti sa partenaire, qu'il s'était borné à se dire atteint d'une maladie du sang et qu'à la question de Y._ de savoir s'il était porteur du virus HIV, il avait opposé le silence. Le 9 juin 2004, le Tribunal d'accusation a rejeté la requête. Il a considéré que X._ savait qu'il était séropositif, qu'il n'en avait pas averti sa partenaire, qu'il s'était borné à se dire atteint d'une maladie du sang et qu'à la question de Y._ de savoir s'il était porteur du virus HIV, il avait opposé le silence. C. Agissant par la voie du recours de droit public, X._ demande au Tribunal fédéral d'annuler la décision du 9 juin 2004 et de renvoyer la cause au Tribunal d'accusation pour nouvelle décision au sens des considérants. Il invoque l'art. 6 par. 2 CEDH, ainsi l'art. 9 Cst. prohibant l'arbitraire. Il requiert l'assistance judiciaire. Le Tribunal d'accusation se réfère à sa décision. Le Ministère public conclut au rejet du recours.