The alpha passed to plt.text() will change the transparency of the text font. To change the background you have to change the alpha using Text.set_bbox():
t = plt.text(0.5, 0.5, 'text', transform=ax.transAxes, fontsize=30)
t.set_bbox(dict(facecolor="red", alpha=0.5, edgecolor="red"))
#changed first dict arg from "color="red"" to "facecolor="red"" to work on python 3.6
To remove the border of the text box, as suggested in the comment of @halt9k, you can use .set_bbox(dict(facecolor="white", alpha=0.5, linewidth=0)).
