1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
3 //                           Cepstral, LLC                               //
4 //                        Copyright (c) 2001                             //
5 //                        All Rights Reserved.                           //
6 //                                                                       //
7 //  Permission is hereby granted, free of charge, to use and distribute  //
8 //  this software and its documentation without restriction, including   //
9 //  without limitation the rights to use, copy, modify, merge, publish,  //
10 //  distribute, sublicense, and/or sell copies of this work, and to      //
11 //  permit persons to whom this work is furnished to do so, subject to   //
12 //  the following conditions:                                            //
13 //   1. The code must retain the above copyright notice, this list of    //
14 //      conditions and the following disclaimer.                         //
15 //   2. Any modifications must be clearly marked as such.                //
16 //   3. Original authors' names are not deleted.                         //
17 //   4. The authors' names are not used to endorse or promote products   //
18 //      derived from this software without specific prior written        //
19 //      permission.                                                      //
20 //                                                                       //
21 //  CEPSTRAL, LLC AND THE CONTRIBUTORS TO THIS WORK DISCLAIM ALL         //
22 //  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED       //
23 //  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL         //
24 //  CEPSTRAL, LLC NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL,        //
25 //  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER          //
26 //  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION    //
27 //  OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR  //
28 //  IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.          //
29 //                                                                       //
30 ///////////////////////////////////////////////////////////////////////////
31 //             Author:  David Huggins-Daines (dhd@cepstral.com)          //
32 //               Date:  November 2001                                    //
33 ///////////////////////////////////////////////////////////////////////////
34 
35 #include <atlbase.h>
36 #include <stdio.h>
37 #include <sphelper.h>
38 
39 /* CHANGEME: Include the _i.c file for your voice here instead. */
40 #include "../FliteCMUKalDiphone_i.c"
41 
wmain(int argc,WCHAR * argv[])42 int wmain(int argc, WCHAR *argv[])
43 {
44 	USES_CONVERSION;
45 	HRESULT hr;
46 
47 	::CoInitialize(NULL);
48 
49 	ISpObjectToken *cpToken;
50 	ISpDataKey *cpDataKeyAttribs;
51 
52 	hr = SpCreateNewTokenEx(
53 		SPCAT_VOICES,
54 
55 		/* CHANGEME: Change the following five arguments for your voice. */
56 		L"CMUKal",                    /* A unique name for your voice. */
57 		&CLSID_FliteCMUKalDiphoneObj, /* The CLSID for your voice object. */
58 		L"CMU Kal Diphone Voice",     /* Language-independent full name. */
59 		0x409,                        /* Language ID (US English is 0x409) */
60 		L"CMU Kal Diphone Voice",     /* Language-dependent full name. */
61 
62 		&cpToken,
63 		&cpDataKeyAttribs);
64 
65 	//--- Set additional attributes for searching and the path to the
66 	//    voice data file we just created.
67 	if (SUCCEEDED(hr))
68 	{
69 		/* CHANGEME: The gender of your speaker. */
70                 hr = cpDataKeyAttribs->SetStringValue(L"Gender",
71 						      L"Male");
72 
73 		/* CHANGEME: The name of your speaker. */
74                 if (SUCCEEDED(hr))
75 			hr = cpDataKeyAttribs->SetStringValue(L"Name",
76 							      L"CMU Kal Diphone");
77 
78 		/* CHANGEME: The language IDs supported by your voice. */
79                 if (SUCCEEDED(hr))
80 			hr = cpDataKeyAttribs->SetStringValue(L"Language",
81 							      /* US English;
82 								 English */
83 							      L"409;9");
84 
85 		/* CHANGEME: The general age of your speaker (Adult, Child). */
86                 if (SUCCEEDED(hr))
87 			hr = cpDataKeyAttribs->SetStringValue(L"Age",
88 							      L"Adult");
89 
90 		/* CHANGEME: The vendor name for your voice. */
91                 if (SUCCEEDED(hr))
92 			hr = cpDataKeyAttribs->SetStringValue(L"Vendor",
93 							      L"CMU");
94 	}
95 	::CoUninitialize();
96 
97 	if (FAILED(hr)) {
98 		fprintf(stderr, "SpCreateNewTokenEx failed, code %x\n",
99 			FAILED(hr));
100 		return FAILED(hr);
101 	}
102 
103 	return 0;
104 }
105