Polar Bear, Polar Bear, what do you hear?
05AB1E, 349 331 330 322 314 311 bytes
•4i;kV_†©:š×Îj€Yå—‚‘%˜ESÎ´þ¤çÑ9¶‹{Å€7¾à{Ì®qA•35B0¡…ing«lV•7ü[¿‘¢wÀ¶à-‚¤î„jHâ™ÐJ'µ‡ÀÂý6›ü‚š¸€%NtÅýµL›fU¥ì€€uîT¡›Ÿ{!œ&gt;'Ì&amp;ý§¨Ü?é&gt;•36B1ð:0¡™D©„, «D‚ø“€À€·€î—«?“¶«¸â€˜€JU¦“„¾“‚˜lv„I “—«0€†€¯¶å.“«0¡`yð«Y¦õ‚˜Nè«sr„ aN5Qi'n«}ð«N9›ijrj¨ðs«…...«}srJˆ}X¯‚ø€Jvy,¶?}…...DU?Y¨vN__i',¶}yð“€è€…“N6Qi'n«}ð®NèJl?}X,“€Š's€À I—«.“?

Try it online
Explanation
•4i;kV_†©:š×Îj€Yå—‚‘%˜ESÎ´þ¤çÑ9¶‹{Å€7¾à{Ì®qA•
Packed string containing the sounds GROWL0ROAR0SNORT0FLUT0BRAY0HISS0TRUMPET0SNARL0YELP0BELLOW0WHISTL
35B0¡…ing«lV
Unpack, split on 0, add &quot;ing&quot; to each word, convert to lower and store in variable Y
•7ü[¿‘¢wÀ¶à-‚¤î„jHâ™ÐJ'µ‡ÀÂý6›ü‚š¸€%NtÅýµL›fU¥ì€€uîT¡›Ÿ{!œ&gt;'Ì&amp;ý§¨Ü?é&gt;•
Packed string containing the animals POLAR1BEAR0LION0HIPPOPOTAMUS0FLAMINGO0ZEBRA0BOA1CONSTRICTOR0ELEPHANT0LEOPARD0PEACOCK0WALRUS0ZOOKEEPER
36B1ð:0¡™
Unpack, replace 1 with space, split on 0 and convert to title case
D©„, «D‚ø
Duplicate, save to register for later use, add &quot;, &quot; to one copy, duplicate that and zip.
“€À€·€î—«?“¶«¸
Dictionary words &quot;what do you hear?&quot;, followed by a new line, added to a new list
â€˜€JU
Cartesian product of list of &quot;Animal, Animal, &quot; and &quot;what do you hear?\n&quot;, flattened and joined and stores it in variable X.
Pruduces list of strings of the form &quot;Animal, Animal, what do you hear?n&quot;.
¦“„¾“‚˜l
Take the remaining list of animals from before, remove the zookeeper and add children, convert to lower case.
v
For each animal:
„I “—«0€†€¯¶å.“«0¡`

Push &quot;I hear0 in my ear.&quot;, split on 0 and push as separate strings.
yð«Y¦õ‚˜Nè«
Push &quot;animal sound&quot; with children having no sound
sr„ a
Push &quot;a&quot; in correct place
N5Qi'n«}
If the animal is &quot;Elephant&quot; add &quot;n&quot;
ð«
Add space.
N9›ijrj¨ðs«…...«}
If animal is children, remove space and add &quot;...&quot;
srJˆ}
Join the sentence &quot;I hear a(n) animal sound in my ear.&quot; (as well as the children one), store in global array and end loop
X¯‚ø€J
Retrieve the first lines, zip and join producing the first part of the rhyme &quot;Animal, Animal, what do you hear?\nI hear a(n) animal sound in my ear.&quot;
vy,¶?}
Print followed by new line.
…...DU?
Print &quot;...&quot; and store a copy in variable X.
Y¨v
For each sound except &quot;whistling&quot;:
N__i',¶}
For each line except the first one, start it with &quot;,\n&quot; (making the comma go on previous line)
yð“€è€…“
Push sound, space and &quot;like a&quot;
N6Qi'n«}
If Elephant add &quot;n&quot;.
ð®NèJl?}X,
Retrieve the animal saved in register, join everything, print and end loop followed by &quot;...&quot;.
This produces the &quot;sound like a(n) animal,&quot; lines.
“€Š's€À I—«.“?
Print dictionary string &quot;that's what I hear.&quot;