I need to take an audio file recorded by a man and convert it to a child's voice and mix it with a background voice track.
I have searched the internet trying to find a good pr开发者_如何学运维ogram to do this but I didn't find it. Is there a C# API that can help me to implement it myself?
NAudio is .NET based and has a mixing engine - might be worth looking at for your purposes.
I think using a API and writing it yourself may fall under the "too difficult to do so" category. I would recommend using a free multi-track audio editor like Audacity, it has a pitch shift ability (that will do your child voice requirement) and you can play two files on top of each other (to do the background voice requirement)
If you still want/need a API the key word to look for when searching for the child's voice ability is "Pitch shifting"
There is some new functionality in System.Windows.Media namespace using MediaPlayer class with WPF.
But what you are doing requires signal processing and best done in C++. I do not know any good Signal Processing libraries in .NET but Emgu openCV is wrapper around OpenCV which can do advanced signal processing.
What you are trying to do requires advanced signal processing and if you do not have such a background there is no easy way to do it.
Rubber Band Library by Breakfast Quay is a C++ library (released under GPL) that can change the pitch of a recording without changing the speed. It also features formant processing, which can help with changing a voice between a man/woman/child.
See http://rubberbandaudio.com/.
精彩评论