Can anyone please help me to solve is issue. 
  Am using repeater control to load the data from database. Its working properly, though am going this for visually impaired persons I am using SpeechSynthesizer to serve an audio output to the users.
    Without using repeater the audio is working perfectly , but I need to load 100’s of data to the page, so I bound to repeater.  Using repeater the SpeechSynthesizer  is not functioning. Please check my code and do the needful.
    SOURCE CODE:
       <%@ Page language="C#" autoeventwireup="true" codefile="Repeater.aspx.cs" inherits="Repeater"
      async="true" %>
    <%@ Register assembly="AjaxControls" namespace="AjaxControls" tagprefix="cc1" %>
  <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
      <title></title>
  </head>
  <body>
      <form id="form1" runat="server">
            <asp:ScriptManager id="ScriptManager1" runat="server"></asp:ScriptManager>
          <asp:UpdatePanel id="UpdatePanel1" runat="server">
              <ContentTemplate>
                  <div>
                      <asp:Repeater id="rptCustomers" runat="server">
                          <HeaderTemplate>
                              <table border="1">
                                  <tr>
                                      <th scope="col" style="width: 80px">S.No
                                      </th>
                                      <th scope="col" style="width: 80px">Option A
                                      </th>
                                      <th scope="col" style="width: 120px">Option B
                                      </th>
                                  </tr>
                          </HeaderTemplate>
                          <ItemTemplate>
                              <tr>
                                  <td>
                                      <asp:Label id="lbl_Sno" runat="server" text='<%# Bind("OrtAna_SNo") %>'></asp:Label>
                                  </td>
                                  <td>
                                      <asp:RadioButton id="rdOrtAna_ADesc" runat="server" text='<%# Bind("OrtAna_ADesc") %>'
                                          groupname="Option" />
                                  </td>
                                  <td>
                                      <asp:RadioButton id="rdOrtAna_BDesc" runat="server" text='<%# Bind("OrtAna_BDesc") %>'
                                          groupname="Option" />
                                  </td>
                              </tr>
                              <tr>
                                  <td colspan="3">
                                      <asp:Button id="btn_Spk" runat="server" text="Read" commandname="Speak" />
                                  </td>
                              </tr>
                          </ItemTemplate>
                          <FooterTemplate>
                              </table>
                          </FooterTemplate>
                      </asp:Repeater>
                  </div>
              </ContentTemplate>
          </asp:UpdatePanel>
      </form>
  </body>
  </html>
      CODE BEHIND:
   
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Speech;
  using System.Speech.Synthesis;
  using System.Data;
  using System.Data.SqlClient;
  using System.Configuration;
  using System.Threading;
      public partial class Repeater : System.Web.UI.Page
  {
      SpeechSynthesizer sp1 = new SpeechSynthesizer();
      protected void Page_Load(object sender, EventArgs e)
      {
          if (!IsPostBack)
          {
              bindgrid();
          }
      }
        public SqlConnection Con()
      {
          string Connectionstring = string.Empty;
          Connectionstring = ConfigurationManager.ConnectionStrings["DBCon"].ToString();
          SqlConnection conn = new SqlConnection(Connectionstring);
          return conn;
      }
        public void bindgrid()
      {
          SqlConnection conn = Con();
          SqlCommand cmd = new SqlCommand("select * from dbo.OrtAna order by OrtAna_SNo", conn); 
          cmd.CommandType = CommandType.Text;
          using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
          {
              DataTable dt = new DataTable();
              sda.Fill(dt);
              rptCustomers.DataSource = dt;
              rptCustomers.DataBind();
          }
      }
      override protected void OnInit(EventArgs e)
      {
          base.OnInit(e);
          rptCustomers.ItemCommand += new RepeaterCommandEventHandler(rptCustomers_ItemCommand);
      }
      protected void rptCustomers_ItemCommand(object source, RepeaterCommandEventArgs e)
      {
          RadioButtonList rbt1 = (RadioButtonList)(rptCustomers.FindControl("rdOrtAna_ADesc"));
          RadioButtonList rbt2 = (RadioButtonList)(rptCustomers.FindControl("rdOrtAna_BDesc"));
          
          sp1.Volume = 100;
          sp1.Rate = -3;
            if (e.CommandName == "Speak")
          {
              if (e.Item.ItemIndex == 0)
              {
                  sp1.SpeakAsync(rbt1.Text); // Here the code gets keep on loading.
                  sp1.Pause();
                  Thread.Sleep(1500);
                  sp1.Resume();
                  sp1.SpeakAsync(rbt2.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
              }
              if (e.Item.ItemIndex == 1)
              {
                  sp1.SpeakAsync(rbt1.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
                  sp1.Resume();
                  sp1.SpeakAsync(rbt2.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
              }
              if (e.Item.ItemIndex == 2)
              { 
                  sp1.SpeakAsync(rbt1.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
                  sp1.Resume();
                  sp1.SpeakAsync(rbt2.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
              }
              if (e.Item.ItemIndex == 3)
              {
                  sp1.SpeakAsync(rbt1.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
                  sp1.Resume();
                  sp1.SpeakAsync(rbt2.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
              }
              if (e.Item.ItemIndex == 4)
              {
                  sp1.SpeakAsync(rbt1.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
                  sp1.Resume();
                  sp1.SpeakAsync(rbt2.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
              }
              if (e.Item.ItemIndex == 5)
              {
                  sp1.SpeakAsync(rbt1.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
                  sp1.Resume();
                  sp1.SpeakAsync(rbt2.Text);
                  sp1.Pause();
                  Thread.Sleep(1500);
              }
              //need more itemindex to be looped; because having 100 of records to be accessed.
          }
      }
  }
  Please do the needful as soon as possible.
 
 
 Warm Regards,
Narendran Namachivayam,