diff --git a/.gitignore b/.gitignore index 325c1e1..0cf5cb4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ build/ *.so *.exe *.dll +!third_party/**/*.exe +!third_party/**/*.dll setup/out-*.reg *.wav setup/microslopsam.env +third_party/flextalk/extracted/ diff --git a/README.md b/README.md index bd1837c..cbc8edf 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,8 @@ without editing scripts: | `MICROSLOP_ROOT` | repo root | project root | | `MICROSLOP_BUILD` | `$MICROSLOP_ROOT/build` | host binaries, samples | | `MICROSLOP_PREFIX` | `~/.wine-microslopsam` | wine prefix (exported as `WINEPREFIX`) | -| `MICROSLOP_ASSETS` | `../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4` | SAPI4/MSTTS payloads | -| `MICROSLOP_FLEXTALK_DIR` | `../flextalk` | Flextalk archive/extraction | +| `MICROSLOP_ASSETS` | `third_party/sapi4` | SAPI4/MSTTS payloads (vendored) | +| `MICROSLOP_FLEXTALK_DIR` | `third_party/flextalk` | Flextalk cabinet/extraction (vendored) | | `MICROSLOP_SPEECH_H_DIR` | `$MICROSLOP_ROOT/third_party` | `speech.h` include dir (vendored) | | `MICROSLOP_DISPLAY` | `:77` | Xvfb display used for Wine | | `MICROSLOP_WINE`, `MICROSLOP_XVFB`, `MICROSLOP_PYTHON`, `MICROSLOP_FFMPEG` | tool names | tool overrides | diff --git a/docs/TTS-DESIGN.md b/docs/TTS-DESIGN.md index 169e92c..50eedb0 100644 --- a/docs/TTS-DESIGN.md +++ b/docs/TTS-DESIGN.md @@ -404,8 +404,8 @@ scripts: | `MICROSLOP_ROOT` | repo root | project root | | `MICROSLOP_BUILD` | `$MICROSLOP_ROOT/build` | host binaries, samples | | `MICROSLOP_PREFIX` | `~/.wine-microslopsam` | wine prefix (exported as `WINEPREFIX`) | -| `MICROSLOP_ASSETS` | `../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4` | SAPI4/MSTTS payloads | -| `MICROSLOP_FLEXTALK_DIR` | `../flextalk` | Flextalk archive/extraction | +| `MICROSLOP_ASSETS` | `third_party/sapi4` | SAPI4/MSTTS payloads (vendored) | +| `MICROSLOP_FLEXTALK_DIR` | `third_party/flextalk` | Flextalk cabinet/extraction (vendored) | | `MICROSLOP_SPEECH_H_DIR` | `$MICROSLOP_ROOT/third_party` | `speech.h` include dir (vendored) | | `MICROSLOP_DISPLAY` | `:77` | Xvfb display used for Wine | | `MICROSLOP_WINE` / `_XVFB` / `_PYTHON` / `_FFMPEG` | tool names | tool overrides | diff --git a/setup/config.sh b/setup/config.sh index 24da73d..5af5637 100644 --- a/setup/config.sh +++ b/setup/config.sh @@ -24,8 +24,8 @@ fi MICROSLOP_ROOT=${MICROSLOP_ROOT:-$(CDPATH= cd -- "$HERE/.." && pwd)} MICROSLOP_BUILD=${MICROSLOP_BUILD:-$MICROSLOP_ROOT/build} MICROSLOP_PREFIX=${MICROSLOP_PREFIX:-$HOME/.wine-microslopsam} -MICROSLOP_ASSETS=${MICROSLOP_ASSETS:-$MICROSLOP_ROOT/../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4} -MICROSLOP_FLEXTALK_DIR=${MICROSLOP_FLEXTALK_DIR:-$MICROSLOP_ROOT/../flextalk} +MICROSLOP_ASSETS=${MICROSLOP_ASSETS:-$MICROSLOP_ROOT/third_party/sapi4} +MICROSLOP_FLEXTALK_DIR=${MICROSLOP_FLEXTALK_DIR:-$MICROSLOP_ROOT/third_party/flextalk} MICROSLOP_SPEECH_H_DIR=${MICROSLOP_SPEECH_H_DIR:-$MICROSLOP_ROOT/third_party} MICROSLOP_DISPLAY=${MICROSLOP_DISPLAY:-:77} MICROSLOP_XVFB=${MICROSLOP_XVFB:-Xvfb} diff --git a/setup/install.sh b/setup/install.sh index a1c1247..77f55d7 100755 --- a/setup/install.sh +++ b/setup/install.sh @@ -53,7 +53,8 @@ log "setting up wine prefix, SAPI4 runtime and MSTTS voices" EXTRACTED="$MICROSLOP_FLEXTALK_DIR/extracted/TTS_Executables" if [ ! -d "$EXTRACTED/EngineDLLs" ]; then 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 if [ -f "$c" ]; then CAB="$c"; break; fi done diff --git a/third_party/README.md b/third_party/README.md index e64e0de..399fa0b 100644 --- a/third_party/README.md +++ b/third_party/README.md @@ -1,5 +1,36 @@ # third_party -- `speech.h` — Microsoft Speech API 4.0 SDK header (`speech.h`), the same file - referenced from the SAPI4 resources in `docs/NOTES.md`. It is vendored here so the - host builds without any files outside the repository. +Vendored dependencies. Everything the tool needs to run is kept here so the project +does not depend on external downloads that can disappear. Only toolchain packages +(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. diff --git a/third_party/flextalk/data1.cab b/third_party/flextalk/data1.cab new file mode 100644 index 0000000..e02fe25 Binary files /dev/null and b/third_party/flextalk/data1.cab differ diff --git a/third_party/nettss-reference/vox_parser.cpp b/third_party/nettss-reference/vox_parser.cpp new file mode 100644 index 0000000..6aab3fa --- /dev/null +++ b/third_party/nettss-reference/vox_parser.cpp @@ -0,0 +1,744 @@ +#include "vox_parser.hpp" +#include +#include +#include +#include +#include + +static inline std::wstring trim(const std::wstring& s){ + size_t a=0,b=s.size(); + while(aa && 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 split_sentences(const std::wstring& in){ + std::vector out; + std::wstring cur; + for(size_t i=0;i “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 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 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 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 tokenize_ws(const std::wstring& s){ + std::wstringstream ss(s); + std::vector 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& 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;kbool{ + 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 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 cuts; + for(size_t p=0;p0 && p+1i+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=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=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(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(aa && 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 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 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 + +// 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); diff --git a/third_party/sapi4/installers/msttsl.exe b/third_party/sapi4/installers/msttsl.exe new file mode 100644 index 0000000..b6e951f Binary files /dev/null and b/third_party/sapi4/installers/msttsl.exe differ diff --git a/third_party/sapi4/installers/spchapi.exe b/third_party/sapi4/installers/spchapi.exe new file mode 100644 index 0000000..de5df1c Binary files /dev/null and b/third_party/sapi4/installers/spchapi.exe differ diff --git a/third_party/sapi4/msttsl/female.cfg b/third_party/sapi4/msttsl/female.cfg new file mode 100644 index 0000000..b1753a8 Binary files /dev/null and b/third_party/sapi4/msttsl/female.cfg differ diff --git a/third_party/sapi4/msttsl/female.vce b/third_party/sapi4/msttsl/female.vce new file mode 100644 index 0000000..1d1b29b Binary files /dev/null and b/third_party/sapi4/msttsl/female.vce differ diff --git a/third_party/sapi4/msttsl/female8.cfg b/third_party/sapi4/msttsl/female8.cfg new file mode 100644 index 0000000..ee35ba1 Binary files /dev/null and b/third_party/sapi4/msttsl/female8.cfg differ diff --git a/third_party/sapi4/msttsl/female8.vce b/third_party/sapi4/msttsl/female8.vce new file mode 100644 index 0000000..2fd4cee Binary files /dev/null and b/third_party/sapi4/msttsl/female8.vce differ diff --git a/third_party/sapi4/msttsl/male.cfg b/third_party/sapi4/msttsl/male.cfg new file mode 100644 index 0000000..d293a5c Binary files /dev/null and b/third_party/sapi4/msttsl/male.cfg differ diff --git a/third_party/sapi4/msttsl/male.vce b/third_party/sapi4/msttsl/male.vce new file mode 100644 index 0000000..5e0695c Binary files /dev/null and b/third_party/sapi4/msttsl/male.vce differ diff --git a/third_party/sapi4/msttsl/male8.cfg b/third_party/sapi4/msttsl/male8.cfg new file mode 100644 index 0000000..cf24483 Binary files /dev/null and b/third_party/sapi4/msttsl/male8.cfg differ diff --git a/third_party/sapi4/msttsl/male8.vce b/third_party/sapi4/msttsl/male8.vce new file mode 100644 index 0000000..d6c9c29 Binary files /dev/null and b/third_party/sapi4/msttsl/male8.vce differ diff --git a/third_party/sapi4/msttsl/mstts.inf b/third_party/sapi4/msttsl/mstts.inf new file mode 100644 index 0000000..e80348f --- /dev/null +++ b/third_party/sapi4/msttsl/mstts.inf @@ -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" + diff --git a/third_party/sapi4/msttsl/msttssyn.dll b/third_party/sapi4/msttsl/msttssyn.dll new file mode 100644 index 0000000..3d666ac Binary files /dev/null and b/third_party/sapi4/msttsl/msttssyn.dll differ diff --git a/third_party/sapi4/msttsl/sam.cfg b/third_party/sapi4/msttsl/sam.cfg new file mode 100644 index 0000000..4b3973d Binary files /dev/null and b/third_party/sapi4/msttsl/sam.cfg differ diff --git a/third_party/sapi4/msttsl/sam.vce b/third_party/sapi4/msttsl/sam.vce new file mode 100644 index 0000000..cbdeb28 Binary files /dev/null and b/third_party/sapi4/msttsl/sam.vce differ diff --git a/third_party/sapi4/spchapi/SPCHAPI.INF b/third_party/sapi4/spchapi/SPCHAPI.INF new file mode 100644 index 0000000..33bfadf --- /dev/null +++ b/third_party/sapi4/spchapi/SPCHAPI.INF @@ -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 \ No newline at end of file diff --git a/third_party/sapi4/spchapi/SPEECH.DLL b/third_party/sapi4/spchapi/SPEECH.DLL new file mode 100644 index 0000000..3bf6e36 Binary files /dev/null and b/third_party/sapi4/spchapi/SPEECH.DLL differ