C# 文字转语音/C# 使用user32.dll控制音量
文字转语音
1、使用nuget安装:System.Speech,代码如下:
using System.Speech.Synthesis;
SpeechSynthesizer synth = new SpeechSynthesizer();
private void speakParagh(string text)
{
synth.Speak(text);
}
private void Completed(IAsyncResult result)
{
synth.SpeakAsyncCancelAll();
}
public void GetMessage()
{
MyDelegate myDelegate = new MyDelegate(speakParagh);
string content = 有1条公告消息未读,请及时查阅!";
myDelegate.BeginInvoke(content, new AsyncCallback(Completed), null);
}
2、C#控制音量:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace
{
public class SetsysVolume
{
private const byte VK_VOLUME_MUTE = 0xAD;
private const byte VK_VOLUME_DOWN = 0xAE;
private const byte VK_VOLUME_UP = 0xAF;
private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001;
private const UInt32 KEYEVENTF_KEYUP = 0x0002;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, UInt32 dwFlags, UInt32 dwExtraInfo);
[DllImport("user32.dll")]
static extern Byte MapVirtualKey(UInt32 uCode, UInt32 uMapType);
public static void VolumeUp()
{
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
public static void VolumeDown()
{
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
public static void Mute()
{
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
public void SetVolunme(int volume)
{
int half_volume = volume / 2;
for (int i = 0; i <= 50; i++)
{
VolumeDown();
}
for (int i = 0; i <= half_volume; i++)
{
VolumeUp();
}
}
}
}