Based on some reading that I've done, the English "voiced" stops /b d g/ aren't actually voiced word-initially. For instance, /bæt/ is realized as [pæt] or [b̥æt], rather than [bæt]. The distinction between /p t k/ and /b d g/ in these word-initial positions is therefore based on aspiration, rather than voicing.
What confuses me, however, is that I've also read that native monolingual Portuguese speakers hear English word-initial /b/ as [b]. Unlike English, Portuguese /b/ and /p/ are distinguished on the basis on voicing; that is, they are pronounced as [b] and [p], respectively. Because of this, one would think that Portuguese speakers would associate English /b/ with Portuguese /p/, since both are pronounced as [p]. However, this is not the case - English /b/ is heard as Portuguese /b/ instead. So what's going on here? Is there a difference between English /b/ and Portuguese /p/ that I'm missing?