A microscopic model for the room-temperature multiferroic BiFeO3 that includes two Dzyaloshinskii-Moriya interactions and single-ion anisotropy along the ferroelectric polarization predicts both the zero-field spectroscopic modes as well as their splitting and evolution in a magnetic field. Due to simultaneously broken time-reversal and spatial-inversion symmetries, the absorption of light changes as the magnetic field or the direction of light propagation is reversed. We discuss three physical mechanisms that may contribute to this absorption asymmetry known as non-reciprocal directional dichroism: the spin current, magnetostriction, and single-ion anisotropy. We conclude that the non-reciprocal directional dichroism in BiFeO3 is dominated by the spincurrent polarization and is insensitive to the magnetostriction and easy-axis anisotropy. With three independent spin-current parameters, our model accurately describes the non-reciprocal directional dichroism observed for magnetic field along [1, −1, 0]. Since some modes are almost transparent to light traveling in one direction but opaque for light traveling in the opposite direction, BiFeO3 can be used as a room-temperature optical diode at certain frequencies in the GHz to THz range. Our work demonstrates that an analysis of the non-reciprocal directional dichroism spectra based on an effective spin model supplemented by first-principles calculations can produce a quantitative microscopic theory of the magnetoelectric couplings in multiferroic materials.