在WPF中将语音转换为文本,可以使用微软的语音识别API。以下是一个简单的示例代码:
首先,需要在项目中添加Microsoft.CognitiveServices.Speech的NuGet包。
然后,在XAML文件中添加一个Button和一个TextBlock,如下所示:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button x:Name="btnConvert" Content="Convert" HorizontalAlignment="Left" Margin="310,10,0,0" VerticalAlignment="Top" Width="100" Height="30" Click="btnConvert_Click"/>
<TextBlock x:Name="tbText" HorizontalAlignment="Left" Margin="10,50,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="300" Width="700"/>
</Grid>
</Window>
在后台代码中,添加以下代码:
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
using System;
using System.IO;
using System.Threading.Tasks;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private async void btnConvert_Click(object sender, RoutedEventArgs e)
{
string speechSubscriptionKey = "your-speech-subscription-key";
string serviceRegion = "your-service-region";
// Create a speech recognizer
var config = SpeechConfig.FromSubscription(speechSubscriptionKey, serviceRegion);
using var recognizer = new SpeechRecognizer(config);
// Get the audio from the microphone
var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using var audioInputStream = AudioInputStream.CreatePushStream();
using var audioInput = AudioConfig.FromStreamInput(audioInputStream);
// Start recording audio
recognizer.StartContinuousRecognitionAsync().Wait();
Console.WriteLine("Speak now...");
// Read audio from the microphone and send it to the recognizer
byte[] buffer = new byte[16000];
int bytesRead;
while ((bytesRead = Console.Read(buffer, 0, buffer.Length)) > 0)
{
audioInputStream.Write(buffer, 0, bytesRead);
}
// Stop recording audio
recognizer.StopContinuousRecognitionAsync().Wait();
// Get the recognized text
var result = await recognizer.RecognizedAsync();
if (result.Result.Reason == ResultReason.RecognizedSpeech)
{
tbText.Text = result.Result.Text;
}
else
{
tbText.Text = "Error: " + result.Result.Reason.ToString();
}
}
}
}
在上面的代码中,需要将speechSubscriptionKey
和serviceRegion
替换为你自己的订阅密钥和服务区域。
现在,当用户点击“Convert”按钮时,程序将开始录音,并将录制的音频发送到语音识别API。识别结果将显示在TextBlock中。
这个示例仅仅是一个简单的示例,实际上可以根据需要进行更多的定制和优化。
领取专属 10元无门槛券
手把手带您无忧上云