How to add different text in each result of foreach?

You can use the wp_get_attachment_metadata() function which returns an array of data.

I would add it to your code

<?php 
$id = 51;
$count = 0;
$is = get_children("post_parent=$id&post_type=attachment&post_mime_type=image&order_by=ASC");
foreach($is as $i) {
  $url = wp_get_attachment_image_src($i->ID, 'full');
  $attachementMeta = wp_get_attachment_metadata($i->ID);
?>
    <img src="https://wordpress.stackexchange.com/questions/298553/<?php echo $url[0]; ?>" alt="<?php echo $attachementMeta['image_meta']['caption']; ?>">

 <?php 
} 
?>

Read more about the wp_get_attachment_metadata() here

Hope this helps.