My custom captions work across Twitch and YouTube because they're baked on to the screen on my side, in OBS. They're free.
Because I get a lot of website traffic from China and Japan, I have open captions available in English, Chinese, and Japanese. The text is styled to match the inline triggers I use to organize my Obsidian Vault but some words are difficult for the transcription engine to detect so not everything gets translated easily 1:1.
Like many people using automatic caption tools, I use OpenAI's Whisper LLM for transcription and Meta's M2M-100 with CTranslate2 for translation.