In words like bib, did, gig, the lenis stops tend to be almost completely devoiced.
The initial stops are subject to initial devoicing: the onset of vocal cord vibration occurs toward the end of the compression stage. As a result, initially devoiced stops are rather like unaspirated voiceless stops. In other words, devoiced /b,d,g/, represented as [b̥,d̥,g̥] in allophonic transcriptions, sound a lot like [p,t,k]. The syllable-final stops are subject to final devoicing. The voice onset coincides with, or slightly precedes, the formation of the closure, as shown in the following figure:
Recall that the main difference between words like lab/lap, said/set, bag/back lies in the duration of the preceding voiced portion. It tends to be twice as long before a lenis obstruent as before a fortis obstruent: [læːb – læp; sɛːd – sɛt; bæːg – bæk].
The difference in the realization of the final stops themselves is much less striking. While the fortis stops tend to be glottalized and unreleased before a pause, the lenis stops are either unreleased in this context, or pronounced with a gentle release which is audible but quite weak.
Lenis stops are fully voiced only when they are followed and preceded by voiced sounds, as in udder, amber, older, rob a bank, ago, a big band in town.
In other contexts, they are devoiced. For example, the syllable-initial lenis stops in bus, day, go, birthday, fishbone, and disguise are all initially devoiced, while the syllable-final stops in lob, said, stag, lobster, dogfood and magpie are all finally devoiced.
The correct realization of finally devoiced stops tends to be a major problem for speakers of languages like Dutch, German and Polish. In these languages the contrast between voiced and voiceless obstruents is neutralized in syllable-final positions, so that words like Dutch bod and bot are homophones: the vowels are equally long and the final consonants are both voiceless.
Remember that in English the main difference lies in the duration of the preceding vowel: it is quite long by Dutch standards before a lenis obstruent, as in lab, bed, dog. The final consonants should be weakly articulated: try to whisper the final stop, making sure that the compression stage is relatively short and the release weak. Alternatively, lengthen the compression stage and do not release the final stop. In more deliberate styles of speech, final /b,d,g/ may be fully voiced; when pronounced in isolation words like club, bid and hug may even have a voiced release, [kl̥ʌbᵊ, b̥ɪːdᵊ, hʌːgᵊ] (which is not unlike the pronunciation of final stops in French). This type of voiced release may occur as a form of overcompensation in the pronunciation of Dutch speakers of English, who frequently fail to realize that the difference in vowel duration is the most important cue to the perception of final /p/ versus /b/ etc.
To acquire initially devoiced GA /b,d,g/ start from weakly pronounced AN /b,d,g/. In words like fishbone, policedog, stopgap, Dutch speakers will tend to voice the obstruent preceding the lenis stop, as in Dutch asbak. Try to avoid this.