Brain-Flak, 36 10 4242 30 bytes
(<>)<>{({}<>)<>({}<>)({}[{}]]<>){{}{}}{}<>}<> Outputs 0 if it is double speak, and nothing if it isn't
-12 bytes thanks to Nitrodon
How it works
(<>) PushPushes 0 to the second stack <> Go Swaps back to the first stack { Begin Begins a loop that will run for everyuntil twothe charactersstack inis inputempty ({}<>)<>([{}<>]<>) PopPops the top two elementsitems fromoff of the first stack, and pushpushes themtheir difference to the second stack ({{}[{}])}{} Pop themIf the difference is zero, it gets popped and pushnothing theirhappens. difference {{}{}}{}If there difference is Popsone, everythe elementzero ofthat thewas stackput ifon itat isn'tthe zero.beginning Elsegets popped, onlyso popnothing will get outputted at the differenceend <>} SwapSwaps back to the first stack } and restart the End loop <> Swap to the second stack for output