Is it possible to make Arduino talk without shield

What does Serial.print(tempb); show?

tempc = (5.0 * tempc * 100.0) / (8.0 * 1024.0);

tempc is an int. What do you end up with in tempc?

int tempb = tempc + 0.5;

tempb is a local variable with the same name as a global variable. Adding 0.5 to an int does nothing.

The global tempb is never modified, Test_Speech() should be converting 0 to a string.

strcpy(text, tempx);

Why copy one array to another array of the same size?