问题描述
最近经常和外国友人网上聊天,可惜我外语很蹩脚,只能通过翻译软件和他们交流。但是我外语听说读写中的听力很强,英语和日语基本能听懂。在这种情况下我希望有一种便捷的方式来直接朗读我选中的外文文本。
解决方案
我最先考虑的是Google翻译的API,但是碍于资料太少只好作罢。之后我找到Microsoft Speech,相较于其他一些方案配置简单而且资料丰富,也不用科学上网,采用!
我的目标是这样,选中文本后使用BackupSupport的辅助菜单调用一个程式按指定语言朗读。
为了应对一些焦点转移问题,当没有选中文本时,直接朗读剪切板中的内容。
动工前首先需要安装MicrosoftSpeechPlatformSDK和MSSpeech TTS来配置开发环境和运行环境,这方面直接Microsoft官网搜一下就好了,多说无益。
配置完环境后先写一个MSSpeech的包装类,直接放代码
MSSpeechTools.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SpeechLib;
using ZTools;
namespace MSSpeechTest {
public class MSSpeechTools {
/// <summary>
/// 获取安装的所有的Voice的Id列表
/// </summary>
/// <returns></returns>
public static List<string> GetInstalledVoiceIdList() {
List<string> resultList = new List<string>();
try {
SpVoice voice = new SpVoice();
ISpeechObjectTokens ss = voice.GetVoices(string.Empty, string.Empty);
if (ss != null && ss.Count > 0) {
for (int i = 0; i < ss.Count; i++) {
resultList.Add(ss.Item(i).Id);
}
}
} catch (Exception) {
}
return resultList;
}
/// <summary>
/// 根据指定Voice Tag选择Voice朗读文本
/// 会简单进行Voice名的匹配
/// </summary>
///