Hacker News

Show HN: Voice driven murder mystery, Interview AI suspects with your voice

50 points by MrRowTheBoat ago | 11 comments
Hey HN!

I'm excited to show off this really fun project I put together. I originally built this project 2-3 years ago, AI was already booming at the time, however voice AI agents were still very early. I loved my proof of concept at the time, but wasn't quite happy with it.

I recently had the desire to check out the tech again, and know many of you will be interested.

Interviews are speech to speech with OpenAI's gpt-realtime-2.1 over WebRTC. This model is... expensive, and because of that, I have to add some amount of restrictions, conversations are tied to a authenticated Clerk user id. I have also added a 30 minute timer because well, I really don't want to go broke while I sleep tonight.

Each suspect has a tool they call when you make a direct accusation. It captures who you accused and a faithful list of the evidence you actually stated.

A separate gpt-5-mini judge then decides which of the case's required evidence facts you genuinely presented. Paraphrasing counts, vague suspicion and fishing don't.

The rest is Next.js, MongoDB, and Clerk.

Let me know whether the suspects hold up under a real interrogation.

b800h |next [-]

Even the tag-line, "one poisoned patriarch, one locked-in truth" sounds very AI, and makes me think that I'd struggle to enjoy this. But I'll give it a go, because the idea is excellent.

I think this would work very very well in combination with human writers.

grahamburger |next |previous [-]

Neat! I've been wanting to make something like this for a long time, well before LLMs came around. It was one of the first things I tried out with an LLM in the early days of ChatGPT. My son and I made little mysteries for each other and just pasted them in a chatgpt conversation with instructions for it to pretend to be the other characters and whatnot, then handed the keyboard to the player. Mine didn't work that well, I don't think he ever solved it; partially because chatgpt kinda led him astray. When I started his, I just point blank asked the mystery and it told me the solution. I felt bad about that, he had put a good amount of effort into it, but I had reminded him to tell it not to reveal the answer and he didn't. Anyway, I figured someone would make this eventually! Excited to give it a try!

donpdonp |next |previous [-]

even without trying it, its so cool this exists. I think this kind of voice interaction has been a dream of adventure game creators for so long, and now its possible. there was a game many years ago (in the days of messengers like trillium being popular), I forget the name, where one of the characters would make a landline phone call to you. The voice acting was great and it felt novel and exciting to see it work.

wewewedxfgdf |next |previous [-]

I have no problem with AI generated text and story but I just can't stand AI voices. Even a hint it is AI narrated and I check out. I would encourage you to consider getting it voice narrated by real people. I'd rather listen to bad/amateur human narration than AI voices.

As a second point - this is very interesting using voice control as game input are there viable alternatives for realtime voice uasing your own GPU?

londons_explore |next |previous [-]

It was working great... But now it says it can't connect.

Did the server go down or did I hit one of your limits?

bartleeanderson |next |previous [-]

sounds good, but it won't get past Dispatch confirmation. You should specify what networking permissions or whatever is needed. My It goes red and the text to read disappears.

camillomiller |root |parent |next [-]

Vibecoding at its finest

b800h |root |parent |previous [-]

Same.

garbagewoman |next |previous [-]

"voice connection failed"

lorenzo95 |next |previous [-]

sounds neat, would love to try it but I don't make accounts for websites anymore.

garbagewoman |root |parent |next [-]

so if you got locked out of hn, you would just never comment again?

what a strange comment

aljgz |root |parent |previous [-]

[flagged]

runtime_lens |previous [-]

[flagged]