Vendor SAPI4 runtime/voices, Flextalk cabinet, NetTTS reference (standalone, no online deps)

This commit is contained in:
Fisto
2026-09-16 08:43:10 +02:00
parent 805c960a4a
commit 329ffe201f
25 changed files with 1882 additions and 10 deletions
+3
View File
@@ -4,6 +4,9 @@ build/
*.so *.so
*.exe *.exe
*.dll *.dll
!third_party/**/*.exe
!third_party/**/*.dll
setup/out-*.reg setup/out-*.reg
*.wav *.wav
setup/microslopsam.env setup/microslopsam.env
third_party/flextalk/extracted/
+2 -2
View File
@@ -51,8 +51,8 @@ without editing scripts:
| `MICROSLOP_ROOT` | repo root | project root | | `MICROSLOP_ROOT` | repo root | project root |
| `MICROSLOP_BUILD` | `$MICROSLOP_ROOT/build` | host binaries, samples | | `MICROSLOP_BUILD` | `$MICROSLOP_ROOT/build` | host binaries, samples |
| `MICROSLOP_PREFIX` | `~/.wine-microslopsam` | wine prefix (exported as `WINEPREFIX`) | | `MICROSLOP_PREFIX` | `~/.wine-microslopsam` | wine prefix (exported as `WINEPREFIX`) |
| `MICROSLOP_ASSETS` | `../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4` | SAPI4/MSTTS payloads | | `MICROSLOP_ASSETS` | `third_party/sapi4` | SAPI4/MSTTS payloads (vendored) |
| `MICROSLOP_FLEXTALK_DIR` | `../flextalk` | Flextalk archive/extraction | | `MICROSLOP_FLEXTALK_DIR` | `third_party/flextalk` | Flextalk cabinet/extraction (vendored) |
| `MICROSLOP_SPEECH_H_DIR` | `$MICROSLOP_ROOT/third_party` | `speech.h` include dir (vendored) | | `MICROSLOP_SPEECH_H_DIR` | `$MICROSLOP_ROOT/third_party` | `speech.h` include dir (vendored) |
| `MICROSLOP_DISPLAY` | `:77` | Xvfb display used for Wine | | `MICROSLOP_DISPLAY` | `:77` | Xvfb display used for Wine |
| `MICROSLOP_WINE`, `MICROSLOP_XVFB`, `MICROSLOP_PYTHON`, `MICROSLOP_FFMPEG` | tool names | tool overrides | | `MICROSLOP_WINE`, `MICROSLOP_XVFB`, `MICROSLOP_PYTHON`, `MICROSLOP_FFMPEG` | tool names | tool overrides |
+2 -2
View File
@@ -404,8 +404,8 @@ scripts:
| `MICROSLOP_ROOT` | repo root | project root | | `MICROSLOP_ROOT` | repo root | project root |
| `MICROSLOP_BUILD` | `$MICROSLOP_ROOT/build` | host binaries, samples | | `MICROSLOP_BUILD` | `$MICROSLOP_ROOT/build` | host binaries, samples |
| `MICROSLOP_PREFIX` | `~/.wine-microslopsam` | wine prefix (exported as `WINEPREFIX`) | | `MICROSLOP_PREFIX` | `~/.wine-microslopsam` | wine prefix (exported as `WINEPREFIX`) |
| `MICROSLOP_ASSETS` | `../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4` | SAPI4/MSTTS payloads | | `MICROSLOP_ASSETS` | `third_party/sapi4` | SAPI4/MSTTS payloads (vendored) |
| `MICROSLOP_FLEXTALK_DIR` | `../flextalk` | Flextalk archive/extraction | | `MICROSLOP_FLEXTALK_DIR` | `third_party/flextalk` | Flextalk cabinet/extraction (vendored) |
| `MICROSLOP_SPEECH_H_DIR` | `$MICROSLOP_ROOT/third_party` | `speech.h` include dir (vendored) | | `MICROSLOP_SPEECH_H_DIR` | `$MICROSLOP_ROOT/third_party` | `speech.h` include dir (vendored) |
| `MICROSLOP_DISPLAY` | `:77` | Xvfb display used for Wine | | `MICROSLOP_DISPLAY` | `:77` | Xvfb display used for Wine |
| `MICROSLOP_WINE` / `_XVFB` / `_PYTHON` / `_FFMPEG` | tool names | tool overrides | | `MICROSLOP_WINE` / `_XVFB` / `_PYTHON` / `_FFMPEG` | tool names | tool overrides |
+2 -2
View File
@@ -24,8 +24,8 @@ fi
MICROSLOP_ROOT=${MICROSLOP_ROOT:-$(CDPATH= cd -- "$HERE/.." && pwd)} MICROSLOP_ROOT=${MICROSLOP_ROOT:-$(CDPATH= cd -- "$HERE/.." && pwd)}
MICROSLOP_BUILD=${MICROSLOP_BUILD:-$MICROSLOP_ROOT/build} MICROSLOP_BUILD=${MICROSLOP_BUILD:-$MICROSLOP_ROOT/build}
MICROSLOP_PREFIX=${MICROSLOP_PREFIX:-$HOME/.wine-microslopsam} MICROSLOP_PREFIX=${MICROSLOP_PREFIX:-$HOME/.wine-microslopsam}
MICROSLOP_ASSETS=${MICROSLOP_ASSETS:-$MICROSLOP_ROOT/../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4} MICROSLOP_ASSETS=${MICROSLOP_ASSETS:-$MICROSLOP_ROOT/third_party/sapi4}
MICROSLOP_FLEXTALK_DIR=${MICROSLOP_FLEXTALK_DIR:-$MICROSLOP_ROOT/../flextalk} MICROSLOP_FLEXTALK_DIR=${MICROSLOP_FLEXTALK_DIR:-$MICROSLOP_ROOT/third_party/flextalk}
MICROSLOP_SPEECH_H_DIR=${MICROSLOP_SPEECH_H_DIR:-$MICROSLOP_ROOT/third_party} MICROSLOP_SPEECH_H_DIR=${MICROSLOP_SPEECH_H_DIR:-$MICROSLOP_ROOT/third_party}
MICROSLOP_DISPLAY=${MICROSLOP_DISPLAY:-:77} MICROSLOP_DISPLAY=${MICROSLOP_DISPLAY:-:77}
MICROSLOP_XVFB=${MICROSLOP_XVFB:-Xvfb} MICROSLOP_XVFB=${MICROSLOP_XVFB:-Xvfb}
+2 -1
View File
@@ -53,7 +53,8 @@ log "setting up wine prefix, SAPI4 runtime and MSTTS voices"
EXTRACTED="$MICROSLOP_FLEXTALK_DIR/extracted/TTS_Executables" EXTRACTED="$MICROSLOP_FLEXTALK_DIR/extracted/TTS_Executables"
if [ ! -d "$EXTRACTED/EngineDLLs" ]; then if [ ! -d "$EXTRACTED/EngineDLLs" ]; then
CAB="" CAB=""
for c in "$MICROSLOP_FLEXTALK_DIR/installer/flextalk/data1.cab" \ for c in "$MICROSLOP_FLEXTALK_DIR/data1.cab" \
"$MICROSLOP_FLEXTALK_DIR/installer/flextalk/data1.cab" \
"$MICROSLOP_ASSETS/flextalk/data1.cab"; do "$MICROSLOP_ASSETS/flextalk/data1.cab"; do
if [ -f "$c" ]; then CAB="$c"; break; fi if [ -f "$c" ]; then CAB="$c"; break; fi
done done
+34 -3
View File
@@ -1,5 +1,36 @@
# third_party # third_party
- `speech.h` — Microsoft Speech API 4.0 SDK header (`speech.h`), the same file Vendored dependencies. Everything the tool needs to run is kept here so the project
referenced from the SAPI4 resources in `docs/NOTES.md`. It is vendored here so the does not depend on external downloads that can disappear. Only toolchain packages
host builds without any files outside the repository. (Wine, Winelib, ffmpeg, python3, unshield, mingw) are installed by the system.
## speech.h
`speech.h` — Microsoft Speech API 4.0 SDK header. Used by `host/sapi4host.c`. Copied
from the public SAPI4 header published in the community gist referenced by the asset
repository (see `docs/NOTES.md`).
## sapi4/
The SAPI4 runtime and the MSTTS (Sam/Mary/Mike) voices, extracted from the original
Microsoft installers. Private archival copies; do not redistribute.
- `spchapi/SPEECH.DLL`, `spchapi/SPCHAPI.INF` — SAPI4 runtime and its registration INF.
- `msttsl/msttssyn.dll`, `msttsl/*.vce`, `msttsl/*.cfg`, `msttsl/mstts.inf` — MSTTS
engine, voice data and registration.
- `installers/spchapi.exe`, `installers/msttsl.exe` — original installers, kept for
completeness (the extracted files above are what `setup-prefix.sh` uses).
## flextalk/
- `data1.cab` — InstallShield cabinet with the AT&T Flextalk 2.1 engine and the
"Keith Bell" / "Kerry Watson" voices (the archive.org package).
`setup/install.sh` extracts it with `unshield -O` into `flextalk/extracted/`
(gitignored).
## nettts-reference/
- `vox_parser.cpp`, `vox_parser.hpp` — the VOX prosody encoder from
[h4rm0n1c/NetTTS](https://github.com/h4rm0n1c/NetTTS), kept as the reference for
validating `setup/vox_parser.py`. Upstream declares no license; these files are
reference-only and are not linked into anything we ship.
BIN
View File
Binary file not shown.
+744
View File
@@ -0,0 +1,744 @@
#include "vox_parser.hpp"
#include <vector>
#include <regex>
#include <cwctype>
#include <sstream>
#include <algorithm>
static inline std::wstring trim(const std::wstring& s){
size_t a=0,b=s.size();
while(a<b && iswspace(s[a])) ++a;
while(b>a && iswspace(s[b-1])) --b;
return s.substr(a,b-a);
}
static inline std::wstring to_lower(std::wstring s){
for(auto& c: s) c=(wchar_t)towlower(c);
return s;
}
static inline bool is_all_digits(const std::wstring& t){
if(t.empty()) return false;
for(wchar_t c: t) if(!iswdigit(c)) return false;
return true;
}
static inline bool is_titlecase_word(const std::wstring& t){
if(t.empty()) return false;
if(!iswalpha(t[0]) || !iswupper(t[0])) return false;
return true;
}
static inline std::wstring strip_trailing_punct(std::wstring t){
while(!t.empty()){
wchar_t c = t.back();
if(c==L','||c==L'.'||c==L';'||c==L':'||c==L'!'||c==L'?'||c==L'"'||c==L'\'') t.pop_back();
else break;
}
return t;
}
static inline bool ends_with_br(const std::wstring& s){
size_t n = s.size();
return n >= 5 && s.compare(n-5, 5, L" \\!br") == 0;
}
// Sentence splitter (keeps terminator punctuation attached)
static std::vector<std::wstring> split_sentences(const std::wstring& in){
std::vector<std::wstring> out;
std::wstring cur;
for(size_t i=0;i<in.size();++i){
wchar_t c = in[i];
cur.push_back(c);
if(c==L'.' || c==L'!' || c==L'?'){
size_t j=i+1;
while(j<in.size() && (in[j]==L'"' || in[j]==L'\'')) { cur.push_back(in[j]); ++j; }
out.push_back(trim(cur));
cur.clear();
i = j-1;
}
}
std::wstring tail = trim(cur);
if(!tail.empty()) out.push_back(tail);
return out;
}
// Lead-in break after short opening phrases
static void apply_leadin_break(std::wstring& s){
static const std::wregex r(LR"(^\s*((?:Now|Please|A\s+reminder|On\s+behalf\s+of|Good\s+(?:morning|evening)|This\s+(?:automated\s+train|tram)))\b)",
std::regex_constants::icase);
std::wsmatch m;
if(std::regex_search(s, m, r)){
std::wstring head = trim(m.str(0));
std::wstring rest = trim(s.substr(m.length()));
s = head + L" \\!br " + rest;
}
}
// “the” -> “thee”
// - Backward rule: after preps (to/for/of/in/on/at) or "on behalf of"
// - NEW Forward rule: before TitleCase, single letter (X or X:), or a number
// Robust across \!br tags; preserves trailing punctuation.
static void apply_thee_rule(std::wstring& s){
// tokenize by whitespace; keep tags as tokens
std::wstringstream ss(s);
std::vector<std::wstring> tok; std::wstring t;
while (ss >> t) tok.push_back(t);
if (tok.empty()) return;
auto is_tag = [](const std::wstring& w){
return (w==L"\\!br" || w==L"\\!wH1" || w==L"\\!wH0");
};
auto to_lower_copy = [](std::wstring v){ for (auto& c: v) c=(wchar_t)towlower(c); return v; };
// split trailing punctuation; return (core, punctTail)
auto split_tail = [](const std::wstring& x)->std::pair<std::wstring,std::wstring>{
std::wstring core=x, tail;
while (!core.empty()){
wchar_t c = core.back();
if (c==L','||c==L'.'||c==L';'||c==L':'||c==L'!'||c==L'?'||c==L'"'||c==L'\''){
tail.insert(tail.begin(), c);
core.pop_back();
} else break;
}
return {core, tail};
};
auto clean_lower = [&](const std::wstring& x)->std::wstring{
auto p = split_tail(x);
return to_lower_copy(p.first);
};
auto bare = [&](const std::wstring& x)->std::wstring{
return split_tail(x).first;
};
auto prev_word = [&](int i, int nth)->std::wstring{
for (int k=i-1; k>=0; --k){
if (is_tag(tok[k])) continue;
if (--nth==0) return clean_lower(tok[k]);
}
return L"";
};
auto next_word = [&](int i, int nth)->std::wstring{
for (int k=i+1; k<(int)tok.size(); ++k){
if (is_tag(tok[k])) continue;
if (--nth==0) return tok[k]; // not lowered; we want case info
}
return L"";
};
auto is_prep = [&](const std::wstring& w)->bool{
std::wstring tl = to_lower_copy(w);
return (tl==L"to"||tl==L"for"||tl==L"of"||tl==L"in"||tl==L"on"||tl==L"at");
};
auto is_title = [&](const std::wstring& w)->bool{
auto b = bare(w);
return !b.empty() && iswalpha(b[0]) && iswupper(b[0]);
};
auto is_single_letter = [&](const std::wstring& w)->bool{
auto b = bare(w);
if (b.size()==1 && iswalpha(b[0]) && iswupper(b[0])) return true;
if (b.size()==2 && iswalpha(b[0]) && iswupper(b[0]) && b[1]==L':') return true;
return false;
};
auto is_number = [&](const std::wstring& w)->bool{
auto b = bare(w);
if (b.empty()) return false;
for (wchar_t c: b) if (!iswdigit(c)) return false;
return true;
};
for (int i=0; i<(int)tok.size(); ++i){
if (is_tag(tok[i])) continue;
auto [core, tail] = split_tail(tok[i]);
std::wstring cl = to_lower_copy(core);
if (cl != L"the") { tok[i] = core + tail; continue; }
bool make_thee = false;
// Backward (prepositions, incl. "on behalf of")
std::wstring p1 = prev_word(i, 1);
if (!p1.empty()){
if (is_prep(p1)) make_thee = true;
else if (to_lower_copy(p1) == L"of"){
std::wstring p2 = prev_word(i, 2);
std::wstring p3 = prev_word(i, 3);
if (to_lower_copy(p2)==L"behalf" && to_lower_copy(p3)==L"on") make_thee = true;
}
}
// Forward (before proper names / letters / numbers)
if (!make_thee){
std::wstring n1 = next_word(i, 1);
if (!n1.empty()){
if (is_title(n1) || is_single_letter(n1) || is_number(n1)){
make_thee = true;
}
}
}
tok[i] = (make_thee ? L"thee" : core) + tail;
}
// rebuild
std::wstring out;
for (size_t i=0;i<tok.size();++i){
if (!out.empty()) out.push_back(L' ');
out += tok[i];
}
s.swap(out);
}
// Times, degrees, and 3-digit decomposition
static void apply_time_numbers_degrees(std::wstring& s){
// 12h time like 8:47 AM / A.M. / PM … (eat any trailing dot after meridiem)
{
std::wregex t12(LR"(\b(\d{1,2})[:.](\d{2})\s*((?:A\.?M\.?)|(?:P\.?M\.?))(?:\.)?\b)", std::regex_constants::icase);
std::wstring out; out.reserve(s.size()+32);
std::wsregex_iterator it(s.begin(), s.end(), t12), end;
size_t last = 0;
for(; it!=end; ++it){
auto m = *it;
out.append(s, last, m.position()-last);
std::wstring hh = m.str(1);
std::wstring mm = m.str(2);
std::wstring ap = to_lower(m.str(3));
std::wstring ap1 = (ap[0]==L'p') ? L"P:" : L"Ay:";
out += hh + L" \\!br " + mm + L" \\!br " + ap1 + L" \\!br M:";
last = m.position() + m.length();
}
out.append(s, last, std::wstring::npos);
s.swap(out);
}
// “The time is 8 …” -> break before the hour
s = std::regex_replace(s,
std::wregex(LR"((\b[Tt]he\s+time\s+is)\s+(\d+))"),
L"$1 \\!br $2");
// 24h “HH00 hours” -> “HH \!br hundred \!br hours”
s = std::regex_replace(s,
std::wregex(LR"(\b(\d{2})00\s+hours\b)", std::regex_constants::icase),
L"$1 \\!br hundred \\!br hours");
// Three-digit non-round numbers: 105 -> “100 \!br and \!br 5” (strip leading zero in remainder)
{
std::wregex n3(LR"(\b([1-9])(\d)(\d)\b)");
std::wstring out; out.reserve(s.size()+32);
std::wsregex_iterator it(s.begin(), s.end(), n3), end;
size_t last = 0;
for(; it!=end; ++it){
auto m = *it;
std::wstring yz = m.str(2)+m.str(3);
if (yz == L"00") continue; // round, leave as-is
size_t nz = 0; while (nz < yz.size() && yz[nz]==L'0') ++nz;
std::wstring rem = yz.substr(nz);
out.append(s, last, m.position()-last);
out += m.str(1)+L"00 \\!br and \\!br " + (rem.empty()? yz : rem);
last = m.position() + m.length();
}
out.append(s, last, std::wstring::npos);
s.swap(out);
}
// Degrees: “93 degrees” -> “93 \!br degrees \!br”
s = std::regex_replace(s,
std::wregex(LR"(\b(\d+)\s+degrees\b)", std::regex_constants::icase),
L"$1 \\!br degrees \\!br");
// Fix any lingering "M:." -> "M:" (meridiem shouldn’t carry a period)
s = std::regex_replace(s, std::wregex(LR"(M:\s*\.)"), L"M:");
}
// Syllable heuristic
static int syllables(const std::wstring& w){
if(w.empty()) return 0;
std::wstring s; s.reserve(w.size());
for(wchar_t c: w) s.push_back((wchar_t)towlower(c));
auto isv=[&](wchar_t c){ return c==L'a'||c==L'e'||c==L'i'||c==L'o'||c==L'u'||c==L'y'; };
int count=0; bool in=false;
for(wchar_t c: s){ if(isv(c)){ if(!in){ ++count; in=true; } } else in=false; }
if(count>1 && s.size()>1 && s.back()==L'e' && !(s.size()>2 && s[s.size()-2]==L'l')) --count; // silent 'e' (not "...le")
if(s.size()>2 && s.back()==L'e' && s[s.size()-2]==L'l') ++count; // “…le”
return std::max(1,count);
}
enum Wt { LIGHT, MEDIUM, HEAVY };
static bool is_stop(const std::wstring& tl){
static const wchar_t* sw[] = {
L"the",L"thee",L"a",L"an",L"to",L"for",L"of",L"in",L"on",L"at",L"by",L"with",L"from",
L"as",L"is",L"are",L"was",L"were",L"this",L"that"
};
for(auto* w: sw) if(tl==w) return true;
return false;
}
static bool is_lightverb(const std::wstring& tl){
static const wchar_t* vw[] = {
L"welcome",L"wait",L"stand",L"provide",L"provided",L"return",L"remain",L"maintain",
L"maintained",L"verify",L"contact",L"board",L"arriving",L"inbound",L"bound",
L"commence",L"commences"
};
for(auto* w: vw) if(tl==w) return true;
return false;
}
static bool is_unit(const std::wstring& tl){
static const wchar_t* uw[] = { L"degrees", L"hours", L"percent", L"%" };
for(auto* w: uw) if(tl==w) return true;
return false;
}
static Wt weight(const std::wstring& tok){
if(tok.empty()) return LIGHT;
std::wstring pfree = strip_trailing_punct(tok);
std::wstring tl = to_lower(pfree);
if(is_stop(tl) || is_lightverb(tl)) return LIGHT;
if(is_all_digits(pfree)) return HEAVY;
if(pfree.find(L'-')!=std::wstring::npos) return HEAVY;
if(is_titlecase_word(pfree)) return HEAVY;
if(is_unit(tl)) return HEAVY;
int syl = syllables(pfree);
if(syl>=3 || pfree.size()>=8) return HEAVY; // long or many-syllable content words
return MEDIUM;
}
static bool is_and(const std::wstring& t){ return to_lower(strip_trailing_punct(t))==L"and"; }
static bool starts_with_punct(const std::wstring& t){
if(t.empty()) return false;
wchar_t c = t.front();
return (c==L'.'||c==L','||c==L';'||c==L':'||c==L'!'||c==L'?'||c==L')');
}
static bool is_open_punct(const std::wstring& t){
if(t.empty()) return false;
wchar_t c=t.front(); return (c==L'('||c==L'"'||c==L'\'');
}
// Tokenize on whitespace (keep punctuation with token)
static std::vector<std::wstring> tokenize_ws(const std::wstring& s){
std::wstringstream ss(s);
std::vector<std::wstring> v; std::wstring t;
while(ss >> t) v.push_back(t);
return v;
}
// Insert TitleCase run breaks and Area/Level/Sector blocks
static void emit_titlecase_run(const std::vector<std::wstring>& v, size_t i, size_t j, std::wstring& out){
// place a break before the run
if(!out.empty() && !ends_with_br(out)) out += L" \\!br";
for(size_t k=i;k<j;++k){
out += L" " + v[k] + L" \\!br";
}
}
// Core beat builder (single pass), generic prosody.
// Keeps: TitleCase runs, Area/Level/Sector, "and" join, soft head span,
// comma/semicolon boundary, symmetric linker isolation [BR] linker [BR],
// heavy-gate, 3-beat limiter.
// NEW: Split hyphenated/en-dash/em-dash compounds into parts with breaks.
// Standalone -, –, — act as hard breaks (not spoken).
static std::wstring build_beats(const std::wstring& sentence){
auto v = tokenize_ws(sentence);
if(v.empty()) return sentence;
std::wstring out;
bool since_break_all_light = true;
Wt prev_w = LIGHT;
int content_run = 0; // consecutive MEDIUM/HEAVY since last break
auto reset_after_break = [&](){
since_break_all_light = true;
content_run = 0;
prev_w = LIGHT;
};
auto bare = [](const std::wstring& w){ return strip_trailing_punct(w); };
auto is_area_head = [&](const std::wstring& w){ return w==L"Area"||w==L"Level"||w==L"Sector"; };
auto is_tag = [&](const std::wstring& w){ return (w==L"\\!br" || w==L"\\!wH1" || w==L"\\!wH0"); };
auto lower = [&](std::wstring s){ return to_lower(std::move(s)); };
auto is_single_letter = [&](const std::wstring& w)->bool{
std::wstring b = bare(w);
if (b.size()==1 && iswalpha(b[0]) && iswupper(b[0])) return true; // C
if (b.size()==2 && iswalpha(b[0]) && iswupper(b[0]) && b[1]==L':') return true; // C:
return false;
};
// split trailing punctuation; return (core, punctTail)
auto split_tail = [](const std::wstring& x)->std::pair<std::wstring,std::wstring>{
std::wstring core=x, tail;
while (!core.empty()){
wchar_t c = core.back();
if (c==L','||c==L'.'||c==L';'||c==L':'||c==L'!'||c==L'?'||c==L'"'||c==L'\''){
tail.insert(tail.begin(), c);
core.pop_back();
} else break;
}
return {core, tail};
};
// emit hyphen/dash-split parts with breaks between them; keep tail on last part
auto emit_dash_split = [&](const std::wstring& tok)->bool{
auto [core, tail] = split_tail(tok);
// find internal separators
std::vector<size_t> cuts;
for(size_t p=0;p<core.size();++p){
wchar_t c = core[p];
if (c==L'-' || c==0x2013 /*–*/ || c==0x2014 /*—*/){
// only split if letters on both sides (avoid leading/trailing)
if (p>0 && p+1<core.size() && iswalpha(core[p-1]) && iswalpha(core[p+1]))
cuts.push_back(p);
else
return false; // treat as punctuation case elsewhere
}
}
if (cuts.empty()) return false;
size_t start = 0;
for(size_t idx=0; idx<=cuts.size(); ++idx){
size_t end = (idx<cuts.size() ? cuts[idx] : core.size());
std::wstring part = core.substr(start, end-start);
// spacing before part
if(!out.empty() && !ends_with_br(out) && !starts_with_punct(part) && !is_open_punct(part))
out.push_back(L' ');
// last part gets the tail
if (idx == cuts.size()) part += tail;
out += part;
// break after each part
if(!ends_with_br(out)) out += L" \\!br";
reset_after_break();
start = end + (idx<cuts.size() ? 1 : 0);
}
return true;
};
for(size_t i=0;i<v.size();){
// ---- Proper-noun blocks ----
if (is_area_head(v[i])){
size_t j=i+1;
while(j<v.size()){
std::wstring wj = bare(v[j]);
if(is_all_digits(wj) || is_titlecase_word(wj)) ++j;
else break;
}
if(j>i+1){
emit_titlecase_run(v,i,j,out);
i=j;
reset_after_break();
continue;
}
}
if (is_titlecase_word(bare(v[i]))){
size_t j=i;
while(j<v.size() && is_titlecase_word(bare(v[j]))) ++j;
if(j>=i+2){
emit_titlecase_run(v,i,j,out);
i=j;
reset_after_break();
continue;
}
}
// ---- "and" between heavier items ----
if(is_and(v[i]) && i>0 && i+1<v.size()){
Wt lw = weight(v[i-1]);
Wt rw = weight(v[i+1]);
if(lw>=MEDIUM && rw>=MEDIUM){
if(!ends_with_br(out)) out += L" \\!br";
out += L" and \\!br";
++i;
reset_after_break();
continue;
}
}
// ---- Standalone dash ( -, –, — ) => hard boundary ----
if (v[i]==L"-" || v[i]==L"\u2013" || v[i]==L"\u2014"){
if(!ends_with_br(out)) out += L" \\!br";
reset_after_break();
++i;
continue;
}
// ---- Symmetric linker isolation: [BR] linker [BR] ----
{
std::wstring tok = v[i];
std::wstring tl = lower(bare(tok));
bool in_head_span = (i < 2);
if (!in_head_span && (tl==L"at" || tl==L"in" || tl==L"on" || tl==L"to"
|| tl==L"of" || tl==L"for"|| tl==L"from"|| tl==L"by")){
if(!ends_with_br(out)) out += L" \\!br"; // BEFORE linker
reset_after_break();
if(!out.empty() && !starts_with_punct(tok) && !is_open_punct(tok)) out.push_back(L' ');
out += tok;
if(!ends_with_br(out)) out += L" \\!br"; // AFTER linker
reset_after_break();
++i;
continue;
}
}
// ---- Pre-copula break: put a beat BEFORE "is" when followed by determiner/contenty ----
{
std::wstring tl_is = to_lower(bare(v[i]));
bool in_head_span = (i < 2);
auto is_tag_local = [&](const std::wstring& w){ return (w==L"\\!br" || w==L"\\!wH1" || w==L"\\!wH0"); };
auto is_single_letter = [&](const std::wstring& w)->bool{
std::wstring b = strip_trailing_punct(w);
if (b.size()==1 && iswalpha(b[0]) && iswupper(b[0])) return true; // C
if (b.size()==2 && iswalpha(b[0]) && iswupper(b[0]) && b[1]==L':') return true; // C:
return false;
};
auto is_determiner = [&](const std::wstring& w)->bool{
std::wstring b = to_lower(strip_trailing_punct(w));
return (b==L"the"||b==L"thee"||b==L"a"||b==L"an"||
b==L"this"||b==L"that"||b==L"these"||b==L"those"||
b==L"some"||b==L"any"||b==L"each"||b==L"every"||b==L"no");
};
if (!in_head_span && tl_is == L"is") {
// peek next non-tag token
size_t k = i + 1;
while (k < v.size() && is_tag_local(v[k])) ++k;
bool trigger = false;
if (k < v.size()) {
const std::wstring& n1 = v[k];
if (is_determiner(n1) ||
is_titlecase_word(strip_trailing_punct(n1)) ||
is_all_digits(strip_trailing_punct(n1)) ||
is_single_letter(n1) ||
weight(n1) == HEAVY)
{
trigger = true;
}
}
if (trigger && !ends_with_br(out)) {
out += L" \\!br";
// reset run state like a real boundary
since_break_all_light = true;
content_run = 0;
prev_w = LIGHT;
}
}
}
// ---- Hyphenated / en-dash / em-dash compounds inside token ----
if (emit_dash_split(v[i])) { ++i; continue; }
// ---- Generic token logic ----
std::wstring tok = v[i];
Wt w_eff = weight(tok); // effective weight; may be softened at sentence start
// Soft-start: first two tokens—avoid pre-breaks unless necessary.
bool in_head_span = (i < 2);
if (i==0 && is_titlecase_word(bare(tok))) {
bool next_is_title = (i+1 < v.size()) && is_titlecase_word(bare(v[i+1]));
if (!next_is_title && w_eff == HEAVY) w_eff = MEDIUM; // e.g., "Good evening"
}
// ---- HEAVY-GATE ----
if (w_eff==HEAVY && content_run >= 1){
int k = static_cast<int>(i) - 1;
while (k >= 0 && is_tag(v[k])) --k;
bool exempt = false;
if (k >= 0){
std::wstring prev = v[k];
if (is_titlecase_word(bare(prev)) || is_all_digits(bare(prev)) || is_single_letter(prev)) {
exempt = true;
}
}
if (!exempt){
if(!ends_with_br(out)) out += L" \\!br";
reset_after_break();
}
}
// 3-beat limiter
if (w_eff==HEAVY && content_run >= 2){
if(!ends_with_br(out)) out += L" \\!br";
reset_after_break();
}
// Heavy after only LIGHT (but not inside head span)
if (w_eff==HEAVY && since_break_all_light && !in_head_span){
if(!out.empty() && !ends_with_br(out)) out += L" \\!br";
reset_after_break();
}
// Heavy-Heavy adjacency (outside TitleCase run)
if (i>0 && prev_w==HEAVY && w_eff==HEAVY && !in_head_span){
if(!ends_with_br(out)) out += L" \\!br";
reset_after_break();
}
// Append token with spacing
if(!out.empty() && !starts_with_punct(tok) && !is_open_punct(tok)) out.push_back(L' ');
out += tok;
// Punctuation boundary: break after ',' or ';'
if (!tok.empty()){
wchar_t last = tok.back();
if ((last==L',' || last==L';') && !ends_with_br(out)){
out += L" \\!br";
reset_after_break();
++i;
continue;
}
}
// Update run stats
if (w_eff==LIGHT){
// remain in light span
}else{
++content_run; // MEDIUM or HEAVY
since_break_all_light = false;
}
prev_w = w_eff;
++i;
}
return trim(out);
}
// Tidy spaces and tags
static std::wstring tidy(const std::wstring& s){
std::wstring t = std::regex_replace(s, std::wregex(LR"(\s+)"), L" "); // collapse spaces
t = std::regex_replace(t, std::wregex(LR"(\s*\\!br\s*)"), L" \\!br "); // normalize tag spacing
t = std::regex_replace(t, std::wregex(LR"((\s*\\!br\s*){2,})"), L" \\!br "); // collapse multiple breaks
t = std::regex_replace(t, std::wregex(LR"(\s+([.,!?;:]))"), L"$1"); // no space before punctuation
// trimyou
size_t a=0,b=t.size();
while(a<b && iswspace(t[a])) ++a;
while(b>a && iswspace(t[b-1])) --b;
return t.substr(a,b-a);
}
// Convert standalone letters into stable "letter tokens" for FlexTalk.
// - "A:" / "a:" / bare "A"/"a" near a boundary -> "Ay:"
// - any single UPPERCASE letter near a boundary -> "X:" (exactly one colon)
// Boundaries are start/end or a \!br tag on either side. We preserve trailing punctuation.
static void normalize_letter_tokens(std::wstring& s){
// split by whitespace; keep tags as tokens
std::wstringstream ss(s);
std::vector<std::wstring> tok; std::wstring t;
while (ss >> t) tok.push_back(t);
if (tok.empty()) return;
auto is_tag = [](const std::wstring& w){
return (w==L"\\!br" || w==L"\\!wH1" || w==L"\\!wH0");
};
// strip trailing punctuation, but lift out a single trailing ':' as a flag
auto split_tail = [](const std::wstring& x)->std::tuple<std::wstring,bool,std::wstring>{
std::wstring core = x, punct;
bool had_colon = false;
// peel general punctuation, but remember a single trailing ':'
while(!core.empty()){
wchar_t c = core.back();
if(c==L':' && !had_colon){ had_colon = true; core.pop_back(); continue; }
if(c==L','||c==L'.'||c==L';'||c==L'!'||c==L'?'||c==L'"'||c==L'\''){
punct.insert(punct.begin(), c);
core.pop_back();
continue;
}
break;
}
return {core, had_colon, punct};
};
auto is_boundary = [&](int idx)->bool{
return (idx < 0 || idx >= (int)tok.size() || is_tag(tok[idx]));
};
for (int i=0;i<(int)tok.size();++i){
if (is_tag(tok[i])) continue;
auto [coreOrig, had_colon, tail] = split_tail(tok[i]);
std::wstring core = coreOrig;
const bool near_left = is_boundary(i-1);
const bool near_right = is_boundary(i+1);
const bool near_bound = (near_left || near_right);
// Normalize A / a cases to "Ay:" when isolated or already written as A:
if ((core==L"A" || core==L"a") && (near_bound || had_colon)){
core = L"Ay";
had_colon = true; // ensure exactly one colon added below
}
// Any other single UPPERCASE letter becomes a letter token near a boundary
else if (core.size()==1 && iswalpha(core[0]) && iswupper(core[0]) && near_bound){
// ensure exactly one colon
// (if there was already one as trailing punct, we won't add another)
// special "A" handled above
had_colon = true;
}
// Reassemble: add colon iff had_colon is true, then the rest of punctuation
std::wstring rebuilt = core;
if (had_colon) rebuilt.push_back(L':');
rebuilt += tail;
tok[i] = rebuilt;
}
// Rebuild s (tidy() will normalize spaces/tags later)
std::wstring out;
for (size_t i=0;i<tok.size();++i){
if (!out.empty()) out.push_back(L' ');
out += tok[i];
}
s.swap(out);
}
std::wstring vox_process(const std::wstring& in, bool wrap_vox_tags){
auto sents = split_sentences(in);
std::wstring out;
for (auto sent : sents){
if (sent.empty()) continue;
// ORDER: make "thee" first, then lead-in, then time/nums
apply_thee_rule(sent);
apply_leadin_break(sent);
apply_time_numbers_degrees(sent);
// beats + letter normalization
std::wstring with_beats = build_beats(sent);
normalize_letter_tokens(with_beats);
with_beats = tidy(with_beats);
// sentence-end cadence: add ~300ms pause, then a boundary
if (!with_beats.empty() && with_beats.back()!=L' ') with_beats.push_back(L' ');
with_beats += L"\\!sf500 \\!br";
if (!out.empty()) out.push_back(L' ');
out += with_beats;
}
out = trim(out);
// collapse accidental double breaks from joins, normalize commas before breaks, etc.
out = std::regex_replace(out, std::wregex(LR"((\s*\\!br\s*){2,})"), L" \\!br ");
out = std::regex_replace(out, std::wregex(LR"(\\!br\s*([,;:]))"), L"$1 \\!br");
if (!out.empty()) {
if (wrap_vox_tags) {
out = L"\\!wH1 " + out + L" \\!wH0 ";
} else {
out = out + L" ";
}
}
return out;
}
+8
View File
@@ -0,0 +1,8 @@
#pragma once
#include <string>
// Transform plain text into FlexTalk VOX style with vendor tags.
// - Wraps with \!wH1 ... \!wH0 (trailing space after \!wH0 for safety)
// - Inserts \!br at sentence ends & cadence points
// - Uses a generic prosody engine (no word-specific hacks)
std::wstring vox_process(const std::wstring& in, bool wrap_vox_tags);
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+185
View File
@@ -0,0 +1,185 @@
[Version]
Signature="$Chicago$"
AdvancedINF=2.5,"You need a new version of advpack.dll"
[SourceDisksNames]
1=%AppName%,,1
[DefaultInstall]
CustomDestination=MyCustomDestination
Copyfiles=LexTools,TTSFiles,InfSection
AddReg=TTSReg
DelFiles=DelOldTTSFiles
[DefaultInstall.NT]
CustomDestination=MyCustomDestination
Copyfiles=LexTools,TTSFiles,InfSection
AddReg=TTSReg
DelFiles=DelOldTTSFiles
[MyCustomDestination]
49010=ProgramFilesDestination,21
49000,49001,49002,49003=PackageDestination49000,5
[UninstallDestination]
49010=ProgramFilesDestination,5
49000=PackageDestination49000,5
[ProgramFilesDestination]
HKLM,software\microsoft\windows\currentversion,CommonFilesDir,"%InstallPrompt%","c:\program files\common files"
[PackageDestination49000]
HKLM,Software\Microsoft\MSTTS,InstallDir,"%InstallPrompt%","%49010%\%DefaultDir%"
[Uninstall]
BeginPrompt=BeginPromptSection
EndPrompt=EndPromptSection
RunPreSetupCommands=UninstallUserDict
CustomDestination=UninstallDestination
DelFiles=LexTools,TTSFiles,TTSFiles2
Deldirs=RemoveFolder
DelReg=DelRegSection
SmartReboot=I
Cleanup=1
[Uninstall.Quiet]
RunPreSetupCommands=UninstallUserDict
CustomDestination=UninstallDestination
DelFiles=LexTools,TTSFiles,TTSFiles2
Deldirs=RemoveFolder
DelReg=DelRegSection
SmartReboot=I
Cleanup=1
[UninstallUserDict]
%25%\delttsul.exe
[DestinationDirs]
TTSFiles=49000
TTSFiles2=49000
InfSection=17
DelOldTTSFiles=49000
LexTools=25
[LexTools]
delttsul.exe
[TTSFiles]
msttssyn.dll
female.vce
male.vce
sam.vce
female8.vce
male8.vce
female.cfg
male.cfg
sam.cfg
female8.cfg
male8.cfg
wraptts.dll
wttsf22.dll
wttsm22.dll
wttss22.dll
wttsa22.dll
wttsmm.dll
[TTSFiles2]
freddy.vce
brutus.vce
malew.vce
femalew.vce
[DelOldTTSFiles]
mark.vce
melanie.vce
mark8.vce
melanie8.vce
[InfSection]
msTTS.inf
[RemoveFolder]
%49000%
[TTSReg]
HKLM,Software\Voice\TextToSpeech\Engine,MSTTSSyn,,{E0725551-286F-11d0-8E73-00A0C9083363}
HKCR,CLSID\{E0725551-286F-11d0-8E73-00A0C9083363},,,"Microsoft TTS Engine"
HKCR,CLSID\{E0725551-286F-11d0-8E73-00A0C9083363}\InprocServer32,,,"%49000%\MSTTSSYN.dll"
HKCR,CLSID\{E0725551-286F-11d0-8E73-00A0C9083363}\InprocServer32,ThreadingModel,,Apartment
; use the following reg edit to see which version installed for ActiveX downloads
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E},,,"Downloadable Whistler 3.0"
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E}\Control,,,
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E}\InprocServer32,,,"%49000%\wraptts.dll"
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E}\MiscStatus,,,"0"
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E}\MiscStatus\1,,,"0132497"
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF},,,"Downloadable Whistler 4.0"
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF}\Control,,,
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,,,"%49000%\wttsf22.dll"
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus,,,"0"
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus\1,,,"0132497"
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF},,,"Downloadable Whistler 4.0"
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF}\Control,,,
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,,,"%49000%\wttsm22.dll"
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus,,,"0"
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus\1,,,"0132497"
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF},,,"Downloadable Whistler 4.0"
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF}\Control,,,
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,,,"%49000%\wttss22.dll"
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus,,,"0"
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus\1,,,"0132497"
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF},,,"Downloadable Whistler 4.0"
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF}\Control,,,
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,,,"%49000%\wttsa22.dll"
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus,,,"0"
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus\1,,,"0132497"
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF},,,"Downloadable Whistler 4.0"
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF}\Control,,,
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,,,"%49000%\wttsmm.dll"
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus,,,"0"
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF}\MiscStatus\1,,,"0132497"
; cache information, so enumerates faster
HKLM,Software\Voice\TextToSpeech\Engine\{E0725551-286F-11d0-8E73-00A0C9083363},Dirty,1,1
; for uninstall
HKLM,Software\Microsoft\MSTTS,InstallDir,,"%49000%"
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\MSTTS,"DisplayName",,"%AppName%
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\MSTTS,"UninstallString",,"RunDll32 advpack.dll,LaunchINFSection %17%\msTTS.inf, Uninstall"
[DelRegSection]
HKCU,Software\Microsoft\Whisper
HKLM,Software\Voice\TextToSpeech\Engine,MSTTSSyn
HKCR,CLSID\{E0725551-286F-11d0-8E73-00A0C9083363}
HKCR,CLSID\{161FA782-A52C-11d0-8D7C-00A0C9034A7E}
HKCR,CLSID\{FD913800-5CA2-11d2-A1E6-00A0C913D1EF}
HKCR,CLSID\{FD913801-5CA2-11d2-A1E6-00A0C913D1EF}
HKCR,CLSID\{FD913802-5CA2-11d2-A1E6-00A0C913D1EF}
HKCR,CLSID\{FD913803-5CA2-11d2-A1E6-00A0C913D1EF}
HKCR,CLSID\{FD913804-5CA2-11d2-A1E6-00A0C913D1EF}
HKLM,Software\Voice\TextToSpeech\Engine\{E0725551-286F-11d0-8E73-00A0C9083363}
; uninstall
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\MSTTS
HKLM,Software\Microsoft\MSTTS
[BeginPromptSection]
Prompt=%BeginPrompt%
ButtonType=YESNO
Title=%AppName%
[EndPromptSection]
Prompt=%EndPrompt%
[Strings]
AppName="Microsoft Text-to-Speech Engine 4.0 (English)"
BeginPrompt="Are you sure you want to remove the Microsoft text-to-speech engine? It may prevent text-to-speech from working."
EndPrompt="Uninstall complete."
DefaultDir="microsoft shared\SpeechEngines\TTS"
Binary file not shown.
Binary file not shown.
Binary file not shown.
+900
View File
@@ -0,0 +1,900 @@
[Version]
Signature="$Chicago$"
AdvancedINF=2.5,"You need a new version of advpack.dll"
[SourceDisksNames]
1=%AppName%,,1
[DefaultInstall]
CustomDestination=MyCustomDestination
Copyfiles=APIFiles,InfSection,VCRT
AddReg=APIReg
;RegisterOCXs=RegisterOCXSection
[DefaultInstall.NT]
CustomDestination=MyCustomDestination
Copyfiles=APIFiles,InfSection,VCRT
AddReg=APIReg
;RegisterOCXs=RegisterOCXSection
[MyCustomDestination]
49000,49001,49002,49003=PackageDestination49000,5
[UninstallDestination]
49000=UninstallDestination49000,5
[PackageDestination49000]
HKLM,Software\Microsoft\SpeechAPI,InstallDir,"%InstallPrompt%","%25%\speech"
[UninstallDestination49000]
HKLM,Software\Microsoft\SpeechAPI,InstallDir,"%InstallPrompt%","%25%\speech"
[Uninstall]
;BeginPrompt=BeginPromptSection
;EndPrompt=EndPromptSection
CustomDestination=UninstallDestination
DelFiles=APIFiles,VCmdVDctFiles
Deldirs=RemoveFolder
DelReg=DelRegSection
SmartReboot=I
Cleanup=1
;UnRegisterOCXs=RegisterOCXSection
[DestinationDirs]
APIFiles=49000
VCmdVDctFiles=49000
InfSection=17
VCRT=11
[APIFiles]
speech.dll,,,96
spchtel.dll,,,96
vcmd.exe,,,96
vcauto.tlb,,,96
vtxtauto.tlb,,,96
vcmshl.dll,,,96
speech.hlp
speech.cnt
Xlisten.dll,,,96
Xvoice.dll,,,96
Xcommand.dll,,,96
Vdict.dll,,,96
VText.dll,,,96
XTel.Dll,,,96
WrapSAPI.dll,,,96
[VCRT]
msvcrt.dll,,,16
[InfSection]
spchapi.inf
[VCmdVDctFiles]
speech.gid
vcmd0001.vcd
vcmd0002.vcd
vcmd0003.vcd
vcmd0004.vcd
vcmd0005.vcd
vcmd0006.vcd
vcmd0007.vcd
vcmd0008.vcd
vcmd0009.vcd
vcmd0010.vcd
vcmd0011.vcd
vcmd0012.vcd
vcmd0013.vcd
vcmd0014.vcd
vcmd0015.vcd
vcmd0016.vcd
vcmd0017.vcd
vcmd0018.vcd
vcmd0019.vcd
vdct0001.dct
vdct0002.dct
vdct0003.dct
vdct0004.dct
vdct0005.dct
vdct0006.dct
vdct0007.dct
vdct0008.dct
vdct0009.dct
vdct0010.dct
vdct0011.dct
vdct0012.dct
vdct0013.dct
vdct0014.dct
vdct0015.dct
vdct0016.dct
vdct0017.dct
vdct0018.dct
vdct0019.dct
[RemoveFolder]
%49000%
[APIReg]
HKCR,CLSID\{C63A2B30-5543-11b9-C000-5611722E1D15},,,IVCmd_PSFactory
HKCR,CLSID\{C63A2B30-5543-11b9-C000-5611722E1D15}\InprocServer32,,,%49000%\vcmshl.dll
HKCR,CLSID\{6D40D820-0BA7-11ce-A166-00AA004CD65C},,,"Voice Command Manager"
HKCR,CLSID\{6D40D820-0BA7-11ce-A166-00AA004CD65C}\LocalServer32,,,%49000%\vcmd.exe
HKCR,CLSID\{F1DC95A0-0BA7-11ce-A166-00AA004CD65C},,,"Voice Text Manager"
HKCR,CLSID\{F1DC95A0-0BA7-11ce-A166-00AA004CD65C}\LocalServer32,,,%49000%\vcmd.exe
HKCR,CLSID\{B9BD3860-44DB-101B-90A8-00AA003E4B50},,,ISRShare_PSFactory
HKCR,CLSID\{B9BD3860-44DB-101B-90A8-00AA003E4B50}\InprocServer32,,,%49000%\vcmshl.dll
HKCR,CLSID\{89F70C30-8636-11ce-B763-00AA004CD65C},,,"Speech Recognition Enumerator/Share Object"
HKCR,CLSID\{89F70C30-8636-11ce-B763-00AA004CD65C}\LocalServer32,,,%49000%\vcmd.exe
HKCR,CLSID\{D67C0280-C743-11cd-80E5-00AA003E4B50},,,"Text to Speech Enumerator"
HKCR,CLSID\{D67C0280-C743-11cd-80E5-00AA003E4B50}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{D67C0280-C743-11cd-80E5-00AA003E4B50}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{554667BB-7213-11cf-B210-00AA00A215ED},,,"Lexicon Enumerator"
HKCR,CLSID\{554667BB-7213-11cf-B210-00AA00A215ED}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{554667BB-7213-11cf-B210-00AA00A215ED}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{CB96B400-C743-11cd-80E5-00AA003E4B50},,,"Audio Destination Object"
HKCR,CLSID\{CB96B400-C743-11cd-80E5-00AA003E4B50}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{CB96B400-C743-11cd-80E5-00AA003E4B50}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{E02D16C0-C743-11cd-80E5-00AA003E4B50},,,"Speech Recognition Enumerator"
HKCR,CLSID\{E02D16C0-C743-11cd-80E5-00AA003E4B50}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{E02D16C0-C743-11cd-80E5-00AA003E4B50}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{D24FE500-C743-11cd-80E5-00AA003E4B50},,,"Audio Source Object"
HKCR,CLSID\{D24FE500-C743-11cd-80E5-00AA003E4B50}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{D24FE500-C743-11cd-80E5-00AA003E4B50}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{D4023720-E4B9-11cf-8D56-00A0C9034A7E},,,"Instrumented Audio Source Object"
HKCR,CLSID\{D4023720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{D4023720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{D4123720-E4B9-11cf-8D56-00A0C9034A7E},,,"Suspeding Audio Source Object"
HKCR,CLSID\{D4123720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{D4123720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{D4523720-E4B9-11cf-8D56-00A0C9034A7E},,,"Audio Source from File Object"
HKCR,CLSID\{D4523720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{D4523720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{D4623720-E4B9-11cf-8D56-00A0C9034A7E},,,"Audio Destination to File Object"
HKCR,CLSID\{D4623720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{D4623720-E4B9-11cf-8D56-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{B9F11A90-90E3-11d0-8D77-00A0C9034A7E},,,"DirectSound Destination Object"
HKCR,CLSID\{B9F11A90-90E3-11d0-8D77-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{B9F11A90-90E3-11d0-8D77-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{32C35401-D04F-11d0-99B3-00AA004CD65C},,,"DirectSound Source Object"
HKCR,CLSID\{32C35401-D04F-11d0-99B3-00AA004CD65C}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{32C35401-D04F-11d0-99B3-00AA004CD65C}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{B9F11A95-90E3-11d0-8D77-00A0C9034A7E},,,"Microphone Setup Wizard"
HKCR,CLSID\{B9F11A95-90E3-11d0-8D77-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{B9F11A95-90E3-11d0-8D77-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{B9F11A96-90E3-11d0-8D77-00A0C9034A7E},,,"Phoneme Converter"
HKCR,CLSID\{B9F11A96-90E3-11d0-8D77-00A0C9034A7E}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{B9F11A96-90E3-11d0-8D77-00A0C9034A7E}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{70618F72-D1ED-11d0-8FAC-08002BE4E62A},,,"Speech Tools Grammar Compiler"
HKCR,CLSID\{70618F72-D1ED-11d0-8FAC-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{70618F72-D1ED-11d0-8FAC-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{EFD0E6BA-DB5F-11d0-8FAC-08002BE4E62A},,,"Speech Tools TTS Queue"
HKCR,CLSID\{EFD0E6BA-DB5F-11d0-8FAC-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{EFD0E6BA-DB5F-11d0-8FAC-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{B3613D9F-E26E-11d0-8FAC-08002BE4E62A},,,"Speech Tools Log"
HKCR,CLSID\{B3613D9F-E26E-11d0-8FAC-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{B3613D9F-E26E-11d0-8FAC-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{B3613DA0-E26E-11d0-8FAC-08002BE4E62A},,,"Logging Audio Source"
HKCR,CLSID\{B3613DA0-E26E-11d0-8FAC-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{B3613DA0-E26E-11d0-8FAC-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{2EC5A8A5-E65B-11d0-8FAC-08002BE4E62A},,,"Telephony Audio Source"
HKCR,CLSID\{2EC5A8A5-E65B-11d0-8FAC-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{2EC5A8A5-E65B-11d0-8FAC-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{2EC5A8A6-E65B-11d0-8FAC-08002BE4E62A},,,"Telephony Audio Destination"
HKCR,CLSID\{2EC5A8A6-E65B-11d0-8FAC-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{2EC5A8A6-E65B-11d0-8FAC-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{61935832-FC85-11d0-8FAE-08002BE4E62A},,,"Audio Record Object"
HKCR,CLSID\{61935832-FC85-11d0-8FAE-08002BE4E62A}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{61935832-FC85-11d0-8FAE-08002BE4E62A}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{92655FB1-ADF9-11d1-BEB9-006008317CE8},,,"Lexicon Dialog"
HKCR,CLSID\{92655FB1-ADF9-11d1-BEB9-006008317CE8}\InprocServer32,,,%49000%\Speech.dll
HKCR,CLSID\{92655FB1-ADF9-11d1-BEB9-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{F9D18BF8-E0ED-11d0-AB8B-08002BE4E3B7},,,"Telephony Controls Information Store"
HKCR,CLSID\{F9D18BF8-E0ED-11d0-AB8B-08002BE4E3B7}\InprocServer32,,,%49000%\SpchTel.dll
HKCR,CLSID\{F9D18BF8-E0ED-11d0-AB8B-08002BE4E3B7}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{A26D7620-6FA0-11ce-A166-00AA004CD65C},,,"Voice Command Object"
HKCR,CLSID\{A26D7620-6FA0-11ce-A166-00AA004CD65C}\ProgID,,,Speech.VoiceCommand.1
HKCR,CLSID\{A26D7620-6FA0-11ce-A166-00AA004CD65C}\VersionIndependentProgID,,,Speech.VoiceCommand
HKCR,CLSID\{A26D7620-6FA0-11ce-A166-00AA004CD65C}\LocalServer32,,,%49000%\vcmd.exe
HKCR,CLSID\{FF2C7A52-78F9-11ce-B762-00AA004CD65C},,,"Voice Text Object"
HKCR,CLSID\{FF2C7A52-78F9-11ce-B762-00AA004CD65C}\ProgID,,,Speech.VoiceText.1
HKCR,CLSID\{FF2C7A52-78F9-11ce-B762-00AA004CD65C}\VersionIndependentProgID,,,Speech.VoiceText
HKCR,CLSID\{FF2C7A52-78F9-11ce-B762-00AA004CD65C}\LocalServer32,,,%49000%\vcmd.exe
HKCR,CLSID\{35522CA0-67CE-11cf-9B8B-08005AFC3A41},,,"Voice Dictation Manager"
HKCR,CLSID\{35522CA0-67CE-11cf-9B8B-08005AFC3A41}\LocalServer32,,,%49000%\vcmd.exe
HKCR,Speech.VoiceCommand,,,"VoiceCommand Application"
HKCR,Speech.VoiceCommand\Clsid,,,{A26D7620-6FA0-11ce-A166-00AA004CD65C}
HKCR,Speech.VoiceCommand.1,,,"VCmd Application"
HKCR,Speech.VoiceCommand.1\Clsid,,,{A26D7620-6FA0-11ce-A166-00AA004CD65C}
HKCR,TypeLib\{A26D7621-6FA0-11ce-A166-00AA004CD65C}
HKCR,TypeLib\{A26D7621-6FA0-11ce-A166-00AA004CD65C}\1.0,,,"Voice Command Object Library"
HKCR,TypeLib\{A26D7621-6FA0-11ce-A166-00AA004CD65C}\1.0\HELPDIR
HKCR,TypeLib\{A26D7621-6FA0-11ce-A166-00AA004CD65C}\1.0\409\win32,,,%49000%\vcauto.tlb
HKCR,Interface\{A26D7622-6FA0-11ce-A166-00AA004CD65C},,,IVCmdAuto
HKCR,Interface\{A26D7622-6FA0-11ce-A166-00AA004CD65C}\TypeLib,,,{A26D7621-6FA0-11ce-A166-00AA004CD65C}
HKCR,Interface\{A26D7622-6FA0-11ce-A166-00AA004CD65C}\ProxyStubClsid,,,{00020424-0000-0000-C000-000000000046}
HKCR,Interface\{A26D7622-6FA0-11ce-A166-00AA004CD65C}\ProxyStubClsid32,,,{00020424-0000-0000-C000-000000000046}
HKCR,Interface\{A26D7623-6FA0-11ce-A166-00AA004CD65C},,,IVCmdMenu
HKCR,Interface\{A26D7623-6FA0-11ce-A166-00AA004CD65C}\TypeLib,,,{A26D7621-6FA0-11ce-A166-00AA004CD65C}
HKCR,Interface\{A26D7623-6FA0-11ce-A166-00AA004CD65C}\ProxyStubClsid,,,{00020424-0000-0000-C000-000000000046}
HKCR,Interface\{A26D7623-6FA0-11ce-A166-00AA004CD65C}\ProxyStubClsid32,,,{00020424-0000-0000-C000-000000000046}
HKCR,Speech.VoiceText,,,"VoiceText Application"
HKCR,Speech.VoiceText\Clsid,,,{FF2C7A52-78F9-11ce-B762-00AA004CD65C}
HKCR,Speech.VoiceText.1,,,"VCmd Application"
HKCR,Speech.VoiceText.1\Clsid,,,{FF2C7A52-78F9-11ce-B762-00AA004CD65C}
HKCR,TypeLib\{FF2C7A51-78F9-11ce-B762-00AA004CD65C}
HKCR,TypeLib\{FF2C7A51-78F9-11ce-B762-00AA004CD65C}\1.0,,,"Voice Text Object Library"
HKCR,TypeLib\{FF2C7A51-78F9-11ce-B762-00AA004CD65C}\1.0\HELPDIR
HKCR,TypeLib\{FF2C7A51-78F9-11ce-B762-00AA004CD65C}\1.0\409\win32,,,%49000%\vtxtauto.tlb
HKCR,Interface\{FF2C7A50-78F9-11ce-B762-00AA004CD65C},,,IVTxtAuto
HKCR,Interface\{FF2C7A50-78F9-11ce-B762-00AA004CD65C}\TypeLib,,,{FF2C7A51-78F9-11ce-B762-00AA004CD65C}
HKCR,Interface\{FF2C7A50-78F9-11ce-B762-00AA004CD65C}\ProxyStubClsid,,,{00020424-0000-0000-C000-000000000046}
HKCR,Interface\{FF2C7A50-78F9-11ce-B762-00AA004CD65C}\ProxyStubClsid32,,,{00020424-0000-0000-C000-000000000046}
HKCR,Interface\{CCFD7A60-604D-101B-9926-00AA003CFC2C},,,IVCmdNotifySinkW
HKCR,Interface\{CCFD7A60-604D-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{80B25CC0-5540-11b9-C000-5611722E1D15},,,IVCmdNotifySinkA
HKCR,Interface\{80B25CC0-5540-11b9-C000-5611722E1D15}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D3CC0820-604D-101B-9926-00AA003CFC2C},,,IVCmdEnumW
HKCR,Interface\{D3CC0820-604D-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{E86F9540-DCA2-11CD-A166-00AA004CD65C},,,IVCmdEnumA
HKCR,Interface\{E86F9540-DCA2-11CD-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{DAC54F60-604D-101B-9926-00AA003CFC2C},,,IVCmdMenuW
HKCR,Interface\{DAC54F60-604D-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{746141E0-5543-11b9-C000-5611722E1D15},,,IVCmdMenuA
HKCR,Interface\{746141E0-5543-11b9-C000-5611722E1D15}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{E0DCC220-604D-101B-9926-00AA003CFC2C},,,IVoiceCommandW
HKCR,Interface\{E0DCC220-604D-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{C63A2B30-5543-11b9-C000-5611722E1D15},,,IVoiceCommandA
HKCR,Interface\{C63A2B30-5543-11b9-C000-5611722E1D15}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D981C420-6053-101B-9926-00AA003CFC2C},,,IVCmdMenuSetW
HKCR,Interface\{D981C420-6053-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{AEB2A680-5544-11b9-C000-5611722E1D15},,,IVCmdMenuSetA
HKCR,Interface\{AEB2A680-5544-11b9-C000-5611722E1D15}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{E5F24680-6053-101B-9926-00AA003CFC2C},,,IVCmdAttributesW
HKCR,Interface\{E5F24680-6053-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{FFF5DF80-5544-11b9-C000-5611722E1D15},,,IVCmdAttributesA
HKCR,Interface\{FFF5DF80-5544-11b9-C000-5611722E1D15}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{EE39B8A0-6053-101B-9926-00AA003CFC2C},,,IVCmdDialogsW
HKCR,Interface\{EE39B8A0-6053-101B-9926-00AA003CFC2C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{AA8FE260-5545-11b9-C000-5611722E1D15},,,IVCmdDialogsA
HKCR,Interface\{AA8FE260-5545-11b9-C000-5611722E1D15}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{FD3A2430-E090-11cd-A166-00AA004CD65C},,,IVMsgNotifySinkW
HKCR,Interface\{FD3A2430-E090-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D2C840E0-E092-11cd-A166-00AA004CD65C},,,IVMsgNotifySinkA
HKCR,Interface\{D2C840E0-E092-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{C4FE8740-E093-11cd-A166-00AA004CD65C},,,IVoiceMessageW
HKCR,Interface\{C4FE8740-E093-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{E1B7A180-E093-11cd-A166-00AA004CD65C},,,IVoiceMessageA
HKCR,Interface\{E1B7A180-E093-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{6A8D6140-E095-11cd-A166-00AA004CD65C},,,IVMsgAttributesW
HKCR,Interface\{6A8D6140-E095-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{8BE9CC30-E095-11cd-A166-00AA004CD65C},,,IVMsgAttributesA
HKCR,Interface\{8BE9CC30-E095-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D6469210-E095-11cd-A166-00AA004CD65C},,,IVMsgDialogsW
HKCR,Interface\{D6469210-E095-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{E8F6FA20-E095-11cd-A166-00AA004CD65C},,,IVMsgDialogsA
HKCR,Interface\{E8F6FA20-E095-11cd-A166-00AA004CD65C}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{2F440FB4-CE01-11cf-B234-00AA00A215ED},,,IVCmdNotifySinkExW
HKCR,Interface\{2F440FB4-CE01-11cf-B234-00AA00A215ED}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{2F440FB8-CE01-11cf-B234-00AA00A215ED},,,IVCmdNotifySinkExA
HKCR,Interface\{2F440FB8-CE01-11cf-B234-00AA00A215ED}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{68A33AA0-44CD-101B-90A8-00AA003E4B50},,,ISRAttributesW
HKCR,Interface\{68A33AA0-44CD-101B-90A8-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{2F26B9C1-DB31-11CD-B3CA-00AA0047BA4F},,,ISRAttributesA
HKCR,Interface\{2F26B9C1-DB31-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{F106BFA0-C743-11CD-80E5-00AA003E4B50},,,ISRGramNotifySinkW
HKCR,Interface\{F106BFA0-C743-11CD-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{EFEEA350-CE5E-11CD-9D96-00AA002FC7C9},,,ISRGramNotifySinkA
HKCR,Interface\{EFEEA350-CE5E-11CD-9D96-00AA002FC7C9}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9B0-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRNotifySink
HKCR,Interface\{090CD9B0-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445332-E39F-11d1-BED7-006008317CE8},,,ISRNotifySink2
HKCR,Interface\{9B445332-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{B9BD3860-44DB-101B-90A8-00AA003E4B50},,,ISRCentralW
HKCR,Interface\{B9BD3860-44DB-101B-90A8-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{2F26B9C2-DB31-11CD-B3CA-00AA0047BA4F},,,ISRCentralA
HKCR,Interface\{2F26B9C2-DB31-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{BCFB4C60-44DB-101B-90A8-00AA003E4B50},,,ISRDialogsW
HKCR,Interface\{BCFB4C60-44DB-101B-90A8-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C60-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRDialogsA
HKCR,Interface\{05EB6C60-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445330-E39F-11d1-BED7-006008317CE8},,,ISRDialogs2W
HKCR,Interface\{9B445330-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445331-E39F-11d1-BED7-006008317CE8},,,ISRDialogs2A
HKCR,Interface\{9B445331-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{BFA9F1A0-44DB-101B-90A8-00AA003E4B50},,,ISREnumW
HKCR,Interface\{BFA9F1A0-44DB-101B-90A8-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C61-DBAB-11CD-B3CA-00AA0047BA4F},,,ISREnumA
HKCR,Interface\{05EB6C61-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{C2835060-44DB-101B-90A8-00AA003E4B50},,,ISRFindW
HKCR,Interface\{C2835060-44DB-101B-90A8-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C62-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRFindA
HKCR,Interface\{05EB6C62-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{E8C3E160-C743-11CD-80E5-00AA003E4B50},,,ISRGramCommonW
HKCR,Interface\{E8C3E160-C743-11CD-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C63-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRGramCommonA
HKCR,Interface\{05EB6C63-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{ECC0B180-C743-11CD-80E5-00AA003E4B50},,,ISRGramCFGW
HKCR,Interface\{ECC0B180-C743-11CD-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C64-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRGramCFGA
HKCR,Interface\{05EB6C64-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A3-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRGramDictationW
HKCR,Interface\{090CD9A3-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C65-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRGramDictationA
HKCR,Interface\{05EB6C65-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A4-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRGramInsertionGUI
HKCR,Interface\{090CD9A4-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A5-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResBasicW
HKCR,Interface\{090CD9A5-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C66-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRResBasicA
HKCR,Interface\{05EB6C66-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A6-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResMerge
HKCR,Interface\{090CD9A6-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A7-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResAudio
HKCR,Interface\{090CD9A7-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{aad74c30-4b02-11d1-b792-0060979841b4},,,ISRResAudioEx
HKCR,Interface\{aad74c30-4b02-11d1-b792-0060979841b4}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A8-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResCorrectionW
HKCR,Interface\{090CD9A8-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C67-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRResCorrectionA
HKCR,Interface\{05EB6C67-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A9-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResEval
HKCR,Interface\{090CD9A9-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9AA-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResGraphW
HKCR,Interface\{090CD9AA-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C68-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRResGraphA
HKCR,Interface\{05EB6C68-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{be8f63a0-b915-11d1-b7bc-0060979841b4},,,ISRResGraphEx
HKCR,Interface\{be8f63a0-b915-11d1-b7bc-0060979841b4}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9AB-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResMemory
HKCR,Interface\{090CD9AB-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9AC-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResModifyGUI
HKCR,Interface\{090CD9AC-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9AD-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRResSpeakerW
HKCR,Interface\{090CD9AD-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C69-DBAB-11CD-B3CA-00AA0047BA4F},,,ISRResSpeakerA
HKCR,Interface\{05EB6C69-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445333-E39F-11d1-BED7-006008317CE8},,,ISRSpeakerW
HKCR,Interface\{9B445333-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445334-E39F-11d1-BED7-006008317CE8},,,ISRSpeakerA
HKCR,Interface\{9B445334-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9AE-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRSpeaker2W
HKCR,Interface\{090CD9AE-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9AF-DA1A-11CD-B3CA-00AA0047BA4F},,,ISRSpeaker2A
HKCR,Interface\{090CD9AF-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{E97F05C0-81B3-11ce-B763-00AA004CD65C},,,IEnumSRShareW
HKCR,Interface\{E97F05C0-81B3-11ce-B763-00AA004CD65C}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{E97F05C1-81B3-11ce-B763-00AA004CD65C},,,IEnumSRShareA
HKCR,Interface\{E97F05C1-81B3-11ce-B763-00AA004CD65C}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{0B37F1E0-B8DE-11cf-B22E-00AA00A215ED},,,ISRResScores
HKCR,Interface\{0B37F1E0-B8DE-11cf-B22E-00AA00A215ED}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{1D59DED1-E367-11d1-BED7-006008317CE8},,,IAttributesW
HKCR,Interface\{1D59DED1-E367-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{1D59DED2-E367-11d1-BED7-006008317CE8},,,IAttributesA
HKCR,Interface\{1D59DED2-E367-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{090CD9A2-DA1A-11CD-B3CA-00AA0047BA4F},,,ILexPronounceW
HKCR,Interface\{090CD9A2-DA1A-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{2F26B9C0-DB31-11CD-B3CA-00AA0047BA4F},,,ILexPronounceA
HKCR,Interface\{2F26B9C0-DB31-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{D6E56341-B3EA-11d1-AFA5-0000F81E880D},,,ILexPronounce2W
HKCR,Interface\{D6E56341-B3EA-11d1-AFA5-0000F81E880D}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{D6E56342-B3EA-11d1-AFA5-0000F81E880D},,,ILexPronounce2A
HKCR,Interface\{D6E56342-B3EA-11d1-AFA5-0000F81E880D}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445335-E39F-11d1-BED7-006008317CE8},,,ISpchErrorW
HKCR,Interface\{9B445335-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{9B445336-E39F-11d1-BED7-006008317CE8},,,ISpchErrorA
HKCR,Interface\{9B445336-E39F-11d1-BED7-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C6A-DBAB-11CD-B3CA-00AA0047BA4F},,,ITTSCentralA
HKCR,Interface\{05EB6C6A-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{28016060-4A47-101B-931A-00AA0047BA4F},,,ITTSCentralW
HKCR,Interface\{28016060-4A47-101B-931A-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{0FD6E2A1-E77D-11CD-B3CA-00AA0047BA4F},,,ITTSAttributesA
HKCR,Interface\{0FD6E2A1-E77D-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{1287A280-4A47-101B-931A-00AA0047BA4F},,,ITTSAttributesW
HKCR,Interface\{1287A280-4A47-101B-931A-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{e4963d40-c743-11cd-80e5-00aa003e4b50},,,ITTSBufNotifySink
HKCR,Interface\{e4963d40-c743-11cd-80e5-00aa003e4b50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C6B-DBAB-11CD-B3CA-00AA0047BA4F},,,ITTSDialogsA
HKCR,Interface\{05EB6C6B-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{47F59D00-4A47-101B-931A-00AA0047BA4F},,,ITTSDialogsW
HKCR,Interface\{47F59D00-4A47-101B-931A-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C6D-DBAB-11CD-B3CA-00AA0047BA4F},,,ITTSEnumA
HKCR,Interface\{05EB6C6D-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{6B837B20-4A47-101B-931A-00AA0047BA4F},,,ITTSEnumW
HKCR,Interface\{6B837B20-4A47-101B-931A-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C6E-DBAB-11CD-B3CA-00AA0047BA4F},,,ITTSFindA
HKCR,Interface\{05EB6C6E-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{7AA42960-4A47-101B-931A-00AA0047BA4F},,,ITTSFindW
HKCR,Interface\{7AA42960-4A47-101B-931A-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C6F-DBAB-11CD-B3CA-00AA0047BA4F},,,ITTSNotifySinkA
HKCR,Interface\{05EB6C6F-DBAB-11CD-B3CA-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{C0FA8F40-4A46-101B-931A-00AA0047BA4F},,,ITTSNotifySinkW
HKCR,Interface\{C0FA8F40-4A46-101B-931A-00AA0047BA4F}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{599F77E2-E42E-11d1-BED8-006008317CE8},,,ITTSNotifySink2A
HKCR,Interface\{599F77E2-E42E-11d1-BED8-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{599F77E1-E42E-11d1-BED8-006008317CE8},,,ITTSNotifySink2W
HKCR,Interface\{599F77E1-E42E-11d1-BED8-006008317CE8}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{F546B340-C743-11cd-80E5-00AA003E4B50},,,IAudio
HKCR,Interface\{F546B340-C743-11cd-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{BC06A220-C743-11cd-80E5-00AA003E4B50},,,IAudioSource
HKCR,Interface\{BC06A220-C743-11cd-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{2EC34DA0-C743-11cd-80E5-00AA003E4B50},,,IAudioDest
HKCR,Interface\{2EC34DA0-C743-11cd-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{C0BD9A80-C743-11cd-80E5-00AA003E4B50},,,IAudioSourceNotifySink
HKCR,Interface\{C0BD9A80-C743-11cd-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{ACB08C00-C743-11cd-80E5-00AA003E4B50},,,IAudioDestNotifySink
HKCR,Interface\{ACB08C00-C743-11cd-80E5-00AA003E4B50}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{492FE490-51E7-11b9-C000-FED6CBA3B1A9},,,IAudioFileNotifySink
HKCR,Interface\{492FE490-51E7-11b9-C000-FED6CBA3B1A9}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{FD7C2320-3D6D-11b9-C000-FED6CBA3B1A9},,,IAudioFile
HKCR,Interface\{FD7C2320-3D6D-11b9-C000-FED6CBA3B1A9}\ProxyStubClsid32,,,{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{88AD7DC3-67D5-11cf-9B8B-08005AFC3A41},,,IVoiceDictationW
HKCR,Interface\{88AD7DC3-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{88AD7DC4-67D5-11cf-9B8B-08005AFC3A41},,,IVoiceDictationA
HKCR,Interface\{88AD7DC4-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{6D62B3A0-6893-11cf-9B8B-08005AFC3A41},,,IVDctTextW
HKCR,Interface\{6D62B3A0-6893-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{6D62B3A1-6893-11cf-9B8B-08005AFC3A41},,,IVDctTextA
HKCR,Interface\{6D62B3A1-6893-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{238004E1-F0C4-11d1-BED9-006008317CE8},,,IVDctText2W
HKCR,Interface\{238004E1-F0C4-11d1-BED9-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{238004E2-F0C4-11d1-BED9-006008317CE8},,,IVDctText2A
HKCR,Interface\{238004E2-F0C4-11d1-BED9-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{238004E3-F0C4-11d1-BED9-006008317CE8},,,IVDctTextCache
HKCR,Interface\{238004E3-F0C4-11d1-BED9-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{88AD7DC5-67D5-11cf-9B8B-08005AFC3A41},,,IVDctAttributesW
HKCR,Interface\{88AD7DC5-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{88AD7DC6-67D5-11cf-9B8B-08005AFC3A41},,,IVDctAttributesA
HKCR,Interface\{88AD7DC6-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{88AD7DC7-67D5-11cf-9B8B-08005AFC3A41},,,IVDctDialogsW
HKCR,Interface\{88AD7DC7-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{88AD7DC8-67D5-11cf-9B8B-08005AFC3A41},,,IVDctDialogsA
HKCR,Interface\{88AD7DC8-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{5FEB8800-67D5-11cf-9B8B-08005AFC3A41},,,IVDctNotifySinkW
HKCR,Interface\{5FEB8800-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{88AD7DC0-67D5-11cf-9B8B-08005AFC3A41},,,IVDctNotifySinkA
HKCR,Interface\{88AD7DC0-67D5-11cf-9B8B-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{599F77E3-E42E-11d1-BED8-006008317CE8},,,IVDctNotifySink2W
HKCR,Interface\{599F77E3-E42E-11d1-BED8-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{599F77E4-E42E-11d1-BED8-006008317CE8},,,IVDctNotifySink2A
HKCR,Interface\{599F77E4-E42E-11d1-BED8-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{8953F1A0-7E80-11cf-8D15-00A0C9034A7E},,,IVDctGUI
HKCR,Interface\{8953F1A0-7E80-11cf-8D15-00A0C9034A7E}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{A02C2CA0-AE50-11cf-833A-00AA00A21A29},,,IVDctCommandsW
HKCR,Interface\{A02C2CA0-AE50-11cf-833A-00AA00A21A29}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{A02C2CA1-AE50-11cf-833A-00AA00A21A29},,,IVDctCommandsA
HKCR,Interface\{A02C2CA1-AE50-11cf-833A-00AA00A21A29}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{A02C2CA2-AE50-11cf-833A-00AA00A21A29},,,IVDctGlossaryW
HKCR,Interface\{A02C2CA2-AE50-11cf-833A-00AA00A21A29}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{A02C2CA3-AE50-11cf-833A-00AA00A21A29},,,IVDctGlossaryA
HKCR,Interface\{A02C2CA3-AE50-11cf-833A-00AA00A21A29}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{90A84EA0-6E51-11D0-9BC2-08005AFC3A41},,,IVDctInvTextNormW
HKCR,Interface\{90A84EA0-6E51-11D0-9BC2-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{90A84EA1-6E51-11D0-9BC2-08005AFC3A41},,,IVDctInvTextNormA
HKCR,Interface\{90A84EA1-6E51-11D0-9BC2-08005AFC3A41}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D4E3F8E0-6521-11d1-8C35-006097DF5D01},,,IVDctCommandsBuiltInW
HKCR,Interface\{D4E3F8E0-6521-11d1-8C35-006097DF5D01}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D4E3F8E1-6521-11d1-8C35-006097DF5D01},,,IVDctCommandsAppW
HKCR,Interface\{D4E3F8E1-6521-11d1-8C35-006097DF5D01}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{8763AFD1-7ADE-11d1-BEA7-006008317CE8},,,IVDctCommandsBuiltInA
HKCR,Interface\{8763AFD1-7ADE-11d1-BEA7-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{8763AFD2-7ADE-11d1-BEA7-006008317CE8},,,IVDctCommandsAppA
HKCR,Interface\{8763AFD2-7ADE-11d1-BEA7-006008317CE8}\ProxyStubClsid32,,,{C63A2B30-5543-11b9-C000-5611722E1D15}
; for uninstall
HKLM,Software\Microsoft\SpeechAPI,InstallDir,,%49000%
; controls
HKCR,CLSID\{53961A01-459B-11d1-BE77-006008317CE8},,,"Yes/No Control"
HKCR,CLSID\{53961A01-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A01-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Yes/No Control",,"{53961A01-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A02-459B-11d1-BE77-006008317CE8},,,"Extension Control"
HKCR,CLSID\{53961A02-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A02-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Extension Control",,"{53961A02-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A03-459B-11d1-BE77-006008317CE8},,,"Phone Number Control"
HKCR,CLSID\{53961A03-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A03-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Phone Number Control",,"{53961A03-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A04-459B-11d1-BE77-006008317CE8},,,"Grammar Control"
HKCR,CLSID\{53961A04-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A04-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Grammar Control",,"{53961A04-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A05-459B-11d1-BE77-006008317CE8},,,"Date Control"
HKCR,CLSID\{53961A05-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A05-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Date Control",,"{53961A05-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A06-459B-11d1-BE77-006008317CE8},,,"Time Control"
HKCR,CLSID\{53961A06-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A06-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Time Control",,"{53961A06-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A07-459B-11d1-BE77-006008317CE8},,,"Record Control"
HKCR,CLSID\{53961A07-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A07-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Record Control",,"{53961A07-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A08-459B-11d1-BE77-006008317CE8},,,"Spelling Control"
HKCR,CLSID\{53961A08-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A08-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Spelling Control",,"{53961A08-459B-11d1-BE77-006008317CE8}"
HKCR,CLSID\{53961A09-459B-11d1-BE77-006008317CE8},,,"Name Control"
HKCR,CLSID\{53961A09-459B-11d1-BE77-006008317CE8}\InprocServer32,,,%49000%\spchtel.dll
HKCR,CLSID\{53961A09-459B-11d1-BE77-006008317CE8}\InprocServer32,ThreadingModel,,Apartment
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Name Control",,"{53961A09-459B-11d1-BE77-006008317CE8}"
HKLM,SOFTWARE\Microsoft\SpeechAPI,"PronMailCompany",,"Microsoft"
HKLM,SOFTWARE\Microsoft\SpeechAPI,"PronMailAddRess",,"SpchData@Microsoft.com"
; ActiveX controls
;DirectSR
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE},,,"DirectSR Class"
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\InprocServer32,,,%49000%\Xlisten.dll
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\ProgId,,,"DirectSR.DirectSR.1"
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\ToolboxBitmap32,,,"%49000%\Xlisten.dll,1"
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\TypeLib,,,"{4E3D9D11-0C63-11D1-8BFB-0060081841DE}"
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\Version,,,"1.0"
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\VersionIndependendProgId,,,"DirectSR.DirectSR"
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\Control
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\Insertable
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\Programmable
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\MiscStatus
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE}\MiscStatus\1,,,"131473"
HKCR,TypeLib\{4E3D9D11-0C63-11D1-8BFB-0060081841DE}
HKCR,TypeLib\{4E3D9D11-0C63-11D1-8BFB-0060081841DE}\1.0,,,"Microsoft Direct Speech Recognition"
HKCR,TypeLib\{4E3D9D11-0C63-11D1-8BFB-0060081841DE}\1.0\0\win32,,,"%49000%\Xlisten.dll"
;DirectSS
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE},,,"DirectSS Class"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\InprocServer32,,,%49000%\XVoice.dll
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\ProgId,,,"DirectSS.DirectSS.1"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\ToolboxBitmap32,,,"%49000%\XVoice.dll,1"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\TypeLib,,,"{EEE78583-FE22-11D0-8BEF-0060081841DE}"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\Version,,,"1.0"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\VersionIndependendProgId,,,"DirectSS.DirectSS"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\Control
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\Insertable
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\Programmable
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\MiscStatus
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE}\MiscStatus\1,,,"131473"
HKCR,TypeLib\{EEE78583-FE22-11D0-8BEF-0060081841DE}
HKCR,TypeLib\{EEE78583-FE22-11D0-8BEF-0060081841DE}\1.0,,,"Microsoft Direct Text-to-Speech"
HKCR,TypeLib\{EEE78583-FE22-11D0-8BEF-0060081841DE}\1.0\0\win32,,,"%49000%\XVoice.dll"
;Vcommand
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE},,,"VCommand Class"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\InprocServer32,,,%49000%\Xcommand.dll
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\ProgId,,,"Vcommand.Vcommand.1"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\ToolboxBitmap32,,,"%49000%\Xcommand.dll,1"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\TypeLib,,,"{60462311-3373-11D1-8C43-0060081841DE}"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\Version,,,"1.0"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\VersionIndependendProgId,,,"Vcommand.Vcommand"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\Control
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\Insertable
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\Programmable
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\MiscStatus
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE}\MiscStatus\1,,,"131473"
HKCR,TypeLib\{60462311-3373-11D1-8C43-0060081841DE}
HKCR,TypeLib\{60462311-3373-11D1-8C43-0060081841DE}\1.0,,,"Microsoft Voice Commands"
HKCR,TypeLib\{60462311-3373-11D1-8C43-0060081841DE}\1.0\0\win32,,,"%49000%\Xcommand.dll"
;Vdict
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE},,,"VDict Class"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\InprocServer32,,,%49000%\Vdict.dll
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\ProgId,,,"Vdict.Vdict.1"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\ToolboxBitmap32,,,"%49000%\Vdict.dll,1"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\TypeLib,,,"{582C2183-4016-11D1-8C55-0060081841DE}"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\Version,,,"1.0"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\VersionIndependendProgId,,,"Vdict.Vdict"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\Control
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\Insertable
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\Programmable
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\MiscStatus
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE}\MiscStatus\1,,,"131473"
HKCR,TypeLib\{582C2183-4016-11D1-8C55-0060081841DE}
HKCR,TypeLib\{582C2183-4016-11D1-8C55-0060081841DE}\1.0,,,"Microsoft Voice Dictation"
HKCR,TypeLib\{582C2183-4016-11D1-8C55-0060081841DE}\1.0\0\win32,,,"%49000%\Vdict.dll"
;VText
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE},,,"TextToSpeech Class"
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\InprocServer32,,,%49000%\Vtext.dll
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\ProgId,,,"Vtext.Vtext.1"
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\ToolboxBitmap32,,,"%49000%\Vtext.dll,1"
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\TypeLib,,,"{2398E321-5C6E-11D1-8C65-0060081841DE}"
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\Version,,,"1.0"
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\VersionIndependendProgId,,,"Vtext.Vtext
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\Control
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\Insertable
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\Programmable
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\MiscStatus
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE}\MiscStatus\1,,,"131473"
HKCR,TypeLib\{2398E321-5C6E-11D1-8C65-0060081841DE}
HKCR,TypeLib\{2398E321-5C6E-11D1-8C65-0060081841DE}\1.0,,,"Microsoft Voice Text"
HKCR,TypeLib\{2398E321-5C6E-11D1-8C65-0060081841DE}\1.0\0\win32,,,"%49000%\Vtext.dll"
;Xtel
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE},,,"Telephony Class"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\InprocServer32,,,%49000%\Xtel.dll
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\ProgId,,,"Xtel.XTel.1"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\ToolboxBitmap32,,,"%49000%\XTel.dll,1"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\TypeLib,,,"{FC9E7401-6058-11D1-8C66-0060081841DE}"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\Version,,,"1.0"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}f\VersionIndependendProgId,,,"Xtel.Xtel"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\Control
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\Insertable
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\Programmable
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\MiscStatus
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE}\MiscStatus\1,,,"131473"
HKCR,TypeLib\{FC9E7401-6058-11D1-8C66-0060081841DE}
HKCR,TypeLib\{FC9E7401-6058-11D1-8C66-0060081841DE}\1.0,,,"Microsoft Telephony"
HKCR,TypeLib\{FC9E7401-6058-11D1-8C66-0060081841DE}\1.0\0\win32,,,"%49000%\Xtel.dll"
; Wrapper DLL
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F},,,"Downloadable Speech API"
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}\Control,,,
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}\InprocServer32,,,"%49000%\WrapSAPI.dll"
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}\InprocServer32,ThreadingModel,,Apartment
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}\MiscStatus,,,"0"
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}\MiscStatus\1,,,"132497"
; Work around issues with Dragon NS
HKCR,CLSID\{05EB6C68-DBAB-11CD-B3CA-00AA0047BA4F}\InprocServer32
HKCR,CLSID\{090CD9AA-DA1A-11CD-B3CA-00AA0047BA4F}\InprocServer32
HKCR,CLSID\{090CD9A2-DA1A-11CD-B3CA-00AA0047BA4F}\InprocServer32
HKCR,CLSID\{2F26B9C0-DB31-11CD-B3CA-00AA0047BA4F}\InprocServer32
HKCR,CLSID\{090CD9AE-DA1A-11CD-B3CA-00AA0047BA4F}\InprocServer32
HKCR,CLSID\{090CD9AF-DA1A-11CD-B3CA-00AA0047BA4F}\InprocServer32
; cache information, to work around bugs encountered in older engines
HKLM,Software\Voice\TextToSpeech\Engine\{F063EDA0-8C65-11CF-8FC8-0020AF14F271},Dirty,1,1
HKLM,Software\Voice\TextToSpeech\Engine\{1B6BF820-9299-101B-8A19-265D428C60FF},Dirty,1,1
[DelRegSection]
HKCR,CLSID\{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,CLSID\{6D40D820-0BA7-11ce-A166-00AA004CD65C}
HKCR,CLSID\{F1DC95A0-0BA7-11ce-A166-00AA004CD65C}
HKCR,CLSID\{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,CLSID\{89F70C30-8636-11ce-B763-00AA004CD65C}
HKCR,CLSID\{D67C0280-C743-11cd-80E5-00AA003E4B50}
HKCR,CLSID\{CB96B400-C743-11cd-80E5-00AA003E4B50}
HKCR,CLSID\{E02D16C0-C743-11cd-80E5-00AA003E4B50}
HKCR,CLSID\{D24FE500-C743-11cd-80E5-00AA003E4B50}
HKCR,CLSID\{D4023720-E4B9-11cf-8D56-00A0C9034A7E}
HKCR,CLSID\{D4123720-E4B9-11cf-8D56-00A0C9034A7E}
HKCR,CLSID\{A26D7620-6FA0-11ce-A166-00AA004CD65C}
HKCR,CLSID\{FF2C7A52-78F9-11ce-B762-00AA004CD65C}
HKCR,CLSID\{35522CA0-67CE-11cf-9B8B-08005AFC3A41}
HKCR,CLSID\{554667BB-7213-11cf-B210-00AA00A215ED}
HKCR,CLSID\{B9F11A90-90E3-11d0-8D77-00A0C9034A7E}
HKCR,CLSID\{92655FB1-ADF9-11d1-BEB9-006008317CE8}
HKCR,CLSID\{32C35401-D04F-11d0-99B3-00AA004CD65C}
HKCR,CLSID\{B9F11A95-90E3-11d0-8D77-00A0C9034A7E}
HKCR,CLSID\{B9F11A96-90E3-11d0-8D77-00A0C9034A7E}
HKCR,CLSID\{D4523720-E4B9-11cf-8D56-00A0C9034A7E}
HKCR,CLSID\{D4623720-E4B9-11cf-8D56-00A0C9034A7E}
HKCR,CLSID\{B9F11A95-90E3-11d0-8D77-00A0C9034A7E}
HKCR,CLSID\{B9F11A96-90E3-11d0-8D77-00A0C9034A7E}
HKCR,CLSID\{70618F72-D1ED-11d0-8FAC-08002BE4E62A}
HKCR,CLSID\{EFD0E6BA-DB5F-11d0-8FAC-08002BE4E62A}
HKCR,CLSID\{B3613D9F-E26E-11d0-8FAC-08002BE4E62A}
HKCR,CLSID\{B3613DA0-E26E-11d0-8FAC-08002BE4E62A}
HKCR,CLSID\{2EC5A8A5-E65B-11d0-8FAC-08002BE4E62A}
HKCR,CLSID\{2EC5A8A6-E65B-11d0-8FAC-08002BE4E62A}
HKCR,CLSID\{F9D18BF8-E0ED-11d0-AB8B-08002BE4E3B7}
HKCR,CLSID\{D1352B68-E2B5-11d0-AB8B-08002BE4E3B7}
HKCR,CLSID\{61935832-FC85-11d0-8FAE-08002BE4E62A}
HKCR,Speech.VoiceCommand
HKCR,Speech.VoiceCommand.1
HKCR,TypeLib\{A26D7621-6FA0-11ce-A166-00AA004CD65C}
HKCR,Interface\{A26D7622-6FA0-11ce-A166-00AA004CD65C}
HKCR,Speech.VoiceText
HKCR,Speech.VoiceText.1
HKCR,TypeLib\{FF2C7A51-78F9-11ce-B762-00AA004CD65C}
HKCR,Interface\{FF2C7A50-78F9-11ce-B762-00AA004CD65C}
HKCR,Interface\{CCFD7A60-604D-101B-9926-00AA003CFC2C}
HKCR,Interface\{80B25CC0-5540-11b9-C000-5611722E1D15}
HKCR,Interface\{D3CC0820-604D-101B-9926-00AA003CFC2C}
HKCR,Interface\{E86F9540-DCA2-11CD-A166-00AA004CD65C}
HKCR,Interface\{DAC54F60-604D-101B-9926-00AA003CFC2C}
HKCR,Interface\{746141E0-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{E0DCC220-604D-101B-9926-00AA003CFC2C}
HKCR,Interface\{C63A2B30-5543-11b9-C000-5611722E1D15}
HKCR,Interface\{D981C420-6053-101B-9926-00AA003CFC2C}
HKCR,Interface\{AEB2A680-5544-11b9-C000-5611722E1D15}
HKCR,Interface\{E5F24680-6053-101B-9926-00AA003CFC2C}
HKCR,Interface\{FFF5DF80-5544-11b9-C000-5611722E1D15}
HKCR,Interface\{EE39B8A0-6053-101B-9926-00AA003CFC2C}
HKCR,Interface\{AA8FE260-5545-11b9-C000-5611722E1D15}
HKCR,Interface\{FD3A2430-E090-11cd-A166-00AA004CD65C}
HKCR,Interface\{D2C840E0-E092-11cd-A166-00AA004CD65C}
HKCR,Interface\{C4FE8740-E093-11cd-A166-00AA004CD65C}
HKCR,Interface\{E1B7A180-E093-11cd-A166-00AA004CD65C}
HKCR,Interface\{6A8D6140-E095-11cd-A166-00AA004CD65C}
HKCR,Interface\{8BE9CC30-E095-11cd-A166-00AA004CD65C}
HKCR,Interface\{D6469210-E095-11cd-A166-00AA004CD65C}
HKCR,Interface\{E8F6FA20-E095-11cd-A166-00AA004CD65C}
HKCR,Interface\{2F440FB4-CE01-11cf-B234-00AA00A215ED}
HKCR,Interface\{2F440FB8-CE01-11cf-B234-00AA00A215ED}
HKCR,Interface\{9B445332-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{be8f63a0-b915-11d1-b7bc-0060979841b4}
HKCR,Interface\{9B445333-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{9B445334-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{9B445335-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{9B445336-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{599F77E3-E42E-11d1-BED8-006008317CE8}
HKCR,Interface\{599F77E4-E42E-11d1-BED8-006008317CE8}
HKCR,Interface\{238004E1-F0C4-11d1-BED9-006008317CE8}
HKCR,Interface\{238004E2-F0C4-11d1-BED9-006008317CE8}
HKCR,Interface\{238004E3-F0C4-11d1-BED9-006008317CE8}
HKCR,Interface\{68A33AA0-44CD-101B-90A8-00AA003E4B50}
HKCR,Interface\{2F26B9C1-DB31-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{F106BFA0-C743-11CD-80E5-00AA003E4B50}
HKCR,Interface\{EFEEA350-CE5E-11CD-9D96-00AA002FC7C9}
HKCR,Interface\{090CD9B0-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{B9BD3860-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{2F26B9C2-DB31-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{BCFB4C60-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C60-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{BFA9F1A0-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C61-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{C2835060-44DB-101B-90A8-00AA003E4B50}
HKCR,Interface\{05EB6C62-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{E8C3E160-C743-11CD-80E5-00AA003E4B50}
HKCR,Interface\{05EB6C63-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{ECC0B180-C743-11CD-80E5-00AA003E4B50}
HKCR,Interface\{05EB6C64-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9A3-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{05EB6C65-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9A4-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9A5-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{05EB6C66-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9A6-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{aad74c30-4b02-11d1-b792-0060979841b4}
HKCR,Interface\{090CD9A7-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9A8-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{05EB6C67-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9A9-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9AA-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{05EB6C68-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9AB-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9AC-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9AD-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{05EB6C69-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9AE-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{090CD9AF-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{E97F05C0-81B3-11ce-B763-00AA004CD65C}
HKCR,Interface\{E97F05C1-81B3-11ce-B763-00AA004CD65C}
HKCR,Interface\{0B37F1E0-B8DE-11cf-B22E-00AA00A215ED}
HKCR,Interface\{090CD9A2-DA1A-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{2F26B9C0-DB31-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{D6E56341-B3EA-11d1-AFA5-0000F81E880D}
HKCR,Interface\{D6E56342-B3EA-11d1-AFA5-0000F81E880D}
HKCR,Interface\{1D59DED1-E367-11d1-BED7-006008317CE8}
HKCR,Interface\{1D59DED2-E367-11d1-BED7-006008317CE8}
HKCR,Interface\{9B445330-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{9B445331-E39F-11d1-BED7-006008317CE8}
HKCR,Interface\{05EB6C6A-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{28016060-4A47-101B-931A-00AA0047BA4F}
HKCR,Interface\{0FD6E2A1-E77D-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{1287A280-4A47-101B-931A-00AA0047BA4F}
HKCR,Interface\{e4963d40-c743-11cd-80e5-00aa003e4b50}
HKCR,Interface\{05EB6C6B-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{47F59D00-4A47-101B-931A-00AA0047BA4F}
HKCR,Interface\{05EB6C6D-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{6B837B20-4A47-101B-931A-00AA0047BA4F}
HKCR,Interface\{05EB6C6E-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{7AA42960-4A47-101B-931A-00AA0047BA4F}
HKCR,Interface\{05EB6C6F-DBAB-11CD-B3CA-00AA0047BA4F}
HKCR,Interface\{C0FA8F40-4A46-101B-931A-00AA0047BA4F}
HKCR,Interface\{599F77E2-E42E-11d1-BED8-006008317CE8}
HKCR,Interface\{599F77E1-E42E-11d1-BED8-006008317CE8}
HKCR,Interface\{F546B340-C743-11cd-80E5-00AA003E4B50}
HKCR,Interface\{BC06A220-C743-11cd-80E5-00AA003E4B50}
HKCR,Interface\{2EC34DA0-C743-11cd-80E5-00AA003E4B50}
HKCR,Interface\{C0BD9A80-C743-11cd-80E5-00AA003E4B50}
HKCR,Interface\{ACB08C00-C743-11cd-80E5-00AA003E4B50}
HKCR,Interface\{492FE490-51E7-11b9-C000-FED6CBA3B1A9}
HKCR,Interface\{FD7C2320-3D6D-11b9-C000-FED6CBA3B1A9}
HKCR,Interface\{88AD7DC3-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{88AD7DC4-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{6D62B3A0-6893-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{6D62B3A1-6893-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{88AD7DC5-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{88AD7DC6-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{88AD7DC7-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{88AD7DC8-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{5FEB8800-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{88AD7DC0-67D5-11cf-9B8B-08005AFC3A41}
HKCR,Interface\{8953F1A0-7E80-11cf-8D15-00A0C9034A7E}
HKCR,Interface\{A02C2CA0-AE50-11cf-833A-00AA00A21A29}
HKCR,Interface\{A02C2CA1-AE50-11cf-833A-00AA00A21A29}
HKCR,Interface\{A02C2CA2-AE50-11cf-833A-00AA00A21A29}
HKCR,Interface\{A02C2CA3-AE50-11cf-833A-00AA00A21A29}
HKCR,Interface\{90A84EA0-6E51-11D0-9BC2-08005AFC3A41}
HKCR,Interface\{90A84EA1-6E51-11D0-9BC2-08005AFC3A41}
HKCR,Interface\{D4E3F8E0-6521-11d1-8C35-006097DF5D01}
HKCR,Interface\{D4E3F8E1-6521-11d1-8C35-006097DF5D01}
HKCR,Interface\{8763AFD1-7ADE-11d1-BEA7-006008317CE8}
HKCR,Interface\{8763AFD2-7ADE-11d1-BEA7-006008317CE8}
; wrapper dll
HKCR,CLSID\{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}
; registry entries created by components
HKCU,Software\Voice
HKLM,Software\Voice\VoiceCommands
HKLM,Software\Voice\VoiceDictation
HKCU,Software\Microsoft\SpeechAPI
HKLM,Software\Microsoft\SpeechAPI
; uninstall
HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\SpeechAPI
HKLM,Software\Microsoft\SpchAPI
HKCR,CLSID\{53961A01-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Yes/No Control"
HKCR,CLSID\{53961A02-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Extension Control"
HKCR,CLSID\{53961A03-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Phone Number Control"
HKCR,CLSID\{53961A04-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Grammar Control"
HKCR,CLSID\{53961A05-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Date Control"
HKCR,CLSID\{53961A06-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Time Control"
HKCR,CLSID\{53961A07-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Record Control"
HKCR,CLSID\{53961A08-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Spelling Control"
HKCR,CLSID\{53961A09-459B-11d1-BE77-006008317CE8}
HKLM,SOFTWARE\Microsoft\SpeechAPI\TelephonyControls,"Name Control"
; uninstall ActiveX controls
HKCR,CLSID\{4E3D9D1F-0C63-11D1-8BFB-0060081841DE},,,"DirectSR Class"
HKCR,CLSID\{EEE78591-FE22-11D0-8BEF-0060081841DE},,,"DirectSS Class"
HKCR,CLSID\{66523042-35FE-11D1-8C4D-0060081841DE},,,"VCommand Class"
HKCR,CLSID\{582C2191-4016-11D1-8C55-0060081841DE},,,"VDict Class"
HKCR,CLSID\{2398E32F-5C6E-11D1-8C65-0060081841DE},,,"TextToSpeech Class"
HKCR,CLSID\{FC9E740F-6058-11D1-8C66-0060081841DE},,,"Telephony Class"
[BeginPromptSection]
Prompt=%BeginPrompt%
ButtonType=YESNO
Title=%AppName%
[EndPromptSection]
Prompt=%EndPrompt%
[Strings]
AppName="Microsoft Speech API 4.0"
BeginPrompt="Are you sure you want to remove the Speech API? It will prevent speech recognition and text-to-speech from working."
EndPrompt="Uninstall complete. You may wish to uninstall any text-to-speech and speech recognition engines since they will no longer work."
;we dont register the OCX by default because oleaut32.dll and olepro32.dll are not
;up to date on clean win 95 gold machines; they are if you have an activex server
;like office or IE however.
;[RegisterOCXSection]
;%49000%\xvoice.dll
Binary file not shown.