This looks like a typical task of *detecting components of a mixture distribution* with an umbrella topic being *finite mixture models*. If you use R, you don't need to implement K-means or other clustering algorithms, as there are enough **existing packages** that already do that and more. One of the most popular one - `mixtools` package (http://cran.r-project.org/web/packages/mixtools) - contains function `normalmixEM`, which is based on Expectation-Maximization algorithm and can be used to fit your data to a mixture of normal distributions. For more details and examples, see the package documentation and this blog post: http://exploringdatablog.blogspot.com/2011/08/fitting-mixture-distributions-with-r.html. You may find beneficial to read a brief introduction to mixture distributions prior to reading the above-mentioned post: http://exploringdatablog.blogspot.com/2011/06/brief-introduction-to-mixture.html. Other related packages include `rebmix` (http://cran.r-project.org/web/packages/rebmix), `flexmix` (http://cran.r-project.org/web/packages/flexmix) and `mclust` (for detailed information, please see http://www.stat.washington.edu/mclust and http://cran.r-project.org/web/packages/mclust). Performing a **goodness-of-fit test** for estimating a mixture of normal distributions has been frequently discussed on *Cross Validated*. For example, check this discussion: https://stats.stackexchange.com/q/28873/31372. Finally, the following paper might be of your interest, as it addresses the **intersection** of both topics, related to your question - *mixture analysis* and *speaker identification*. I hope that you will find it useful: http://smtp.intjit.org/journal/volume/12/7/127_2.pdf.