Skip to content

Releases: NaruseMioShirakana/TextCleaner

Cleaners 0.8.0

11 Nov 10:59
246807e
Compare
Choose a tag to compare
Add files via upload

Japanese G2p & Cleaner 0.7.0

25 Mar 05:35
246807e
Compare
Choose a tag to compare
Add files via upload

Japanese G2p & Cleaner 0.6.0

14 Jan 10:00
1a946e5
Compare
Choose a tag to compare

Japanese G2p & Cleaner 0.5.0

12 Jan 08:20
1a946e5
Compare
Choose a tag to compare

为了适配Python Ctypes库,将接口的输入输出均改为wchar_t*

如果想使用openjtalk提取音素的功能,请使用以下函数

// 创建Ojt实例,folder需要输入字典的路径(文件夹)
void CreateOjt(const wchar_t* folder);   
// 提取音素(返回值为提取好的罗马字以及对应信息,"换行符"为下一个音素的标记
const wchar_t* extractFullContext(const wchar_t*);
// 提取片假名
const wchar_t* getKana(const wchar_t*);
// 提取罗马字
const wchar_t* getPhoneme(const wchar_t*);
// 提取罗马字
const wchar_t* getRomaji(const wchar_t*);
// 部分提取国际音标
const wchar_t* getIpa1(const wchar_t*);
// 部分提取国际音标
const wchar_t* getIpa2(const wchar_t*);
// 提取罗马字(假名间空格,拔音前不空格)
const wchar_t* getPhonemeWithBlank(const wchar_t*);
// 提取罗马字(假名间空格,拔音前不空格)
const wchar_t* getRomajiWithBlank(const wchar_t*);
// 部分提取国际音标(假名间空格,拔音前不空格)
const wchar_t* getIpa1WithBlank(const wchar_t*);
// 部分提取国际音标(假名间空格,拔音前不空格)
const wchar_t* getIpa2WithBlank(const wchar_t*);
// 释放Ojt实例
void Release();

示例程序

/*-----------------------------C++示例程序-----------------------------*/
#include <iostream>
#include <windows.h>
#include <string>

int main()
{
	// 将wcout的输出地区定为中国
	std::wcout.imbue(std::locale("chs"));
	
	// 函数指针类型(与上文函数对应)
	using funTy = const wchar_t* (*)(const wchar_t*); 
	
	// 使用WinApi载入Dll
	const auto m_hDynLib = LoadLibrary(L"JapaneseCleaner.dll");
	
	// 载入失败返回0
	if (!m_hDynLib) 
		return 0;
		
	// 载入需要的函数
	const auto CreateOjt = reinterpret_cast<void (*)(const wchar_t*)>(
		reinterpret_cast<void*>(
			GetProcAddress(m_hDynLib, "CreateOjt")
			)
		);
	const auto Test = reinterpret_cast<funTy>(
		reinterpret_cast<void*>(
			GetProcAddress(m_hDynLib, "getRomajiWithBlank")
			)
		);
		
	// 载入失败返回0
	if(!CreateOjt) 
		return 0;
	
	// 创建Ojt实例
	CreateOjt("替换为你的字典路径"); 
	
	// 转换(返回值为空时为转换失败,也许是内存不够或是未调用CreateOjt创建Ojt实例)
	const wchar_t* tmp = Test("授業中に出したら、学生生活終わるなり"); 
	
	// 转换失败则返回0
	if(!tmp)
		return 0;
	
	// 转换为wstring防止未知的编码问题
	const std::wstring a = tmp;        
	
	//输出结果
	std::wcout << a;
	
	// 释放动态库
	FreeLibrary(m_hDynLib);
}
# Python示例程序
import ctypes

if __name__ == "__main__":
    # 加载Dll
    dll = ctypes.cdll.LoadLibrary('JapaneseCleaner.dll')

    # 由于Ctypes的默认地址位数为32位,而dll为64位环境编译,所以需要先将函数位数设置为64位
    dll.CreateOjt.restype = ctypes.c_uint64 
    dll.getRomajiWithBlank.restype = ctypes.c_uint64 

    # 模型路径ctype字符串指针(wchar_t*)
    floder = ctypes.create_unicode_buffer("S:\VSGIT\MoeSS - Release\cleaners")

    # 创建Ojt实例
    dll.CreateOjt(floder)

    # 输入文本ctype字符串指针(wchar_t*)
    chr = ctypes.create_unicode_buffer("授業中に出したら、学生生活終わるなり")

    # 将函数返回值(wchar_t*)转为Python的字符串
    result = ctypes.wstring_at(dll.getRomajiWithBlank(chr))

    # 输出结果
    print(result)

JapaneseG2p v0.4.0

11 Jan 08:13
1a946e5
Compare
Choose a tag to compare
// 如果想使用JapaneseCleaner,只需要放到UI根目录Cleaner文件夹下

// 如果想使用openjtalk提取音素的功能,请使用以下函数
// 创建Ojt实例,folder需要输入字典的路径(文件夹)
void CreateOjt(const char* folder);   
// 提取音素(返回值为提取好的罗马字以及对应信息,"<<eol>>"为下一个音素的标记
const char* extractFullContext(const char*);
// 提取片假名
const char* getKana(const char*);
// 提取罗马字
const char* getPhoneme(const char*);
// 提取罗马字
const char* getRomaji(const char*);
// 部分提取国际音标
const char* getIpa1(const char*);
// 部分提取国际音标
const char* getIpa2(const char*);
// 提取罗马字(假名间空格,拔音前不空格)
const char* getPhonemeWithBlank(const char*);
// 提取罗马字(假名间空格,拔音前不空格)
const char* getRomajiWithBlank(const char*);
// 部分提取国际音标(假名间空格,拔音前不空格)
const char* getIpa1WithBlank(const char*);
// 部分提取国际音标(假名间空格,拔音前不空格)
const char* getIpa2WithBlank(const char*);
// 释放Ojt实例
void Release();

Cxx OpenJTalk 0.3.0

10 Jan 08:48
2b29594
Compare
Choose a tag to compare
// 使用JapaneseCleaner时,由于C++极不好用的字符串,
// 所以请尽量避免大于两字节的编码字符。比方说↑,↓之类的。

// 在使用Dll中的JapaneseCleaner时,请将C酱项目Symbol中的
// '↓'换成'`'
// '↓'换成'#'
// '…'换成'%'

// 如果只想使用openjtalk提取音素的功能,请使用以下三个函数

// 创建Ojt实例,folder需要输入字典的路径(文件夹)
void CreateOjt(const char* folder);   
// 提取音素,text为需要提取的字符串,返回值为提取好的罗马字以及对应信息,输出为一个字符串,其中"<<eol>>"为下一个音素的标记
const char* extractFullContext(const char* text);
// 释放Ojt实例
void ReleaseOjt();

Cxx OpenJTalk 0.2.0

07 Jan 14:24
5318656
Compare
Choose a tag to compare

Cxx OpenJTalk 0.2.0
解压至cleaner文件夹,在模型配置文件中将Cleaner后字符串改为JapaneseCleaner即可使用
理论上使用C酱的项目训练的模型都可以使用(前提是用JapaneseCleaner的SymbolSize为43)
C酱项目:https://github.com/CjangCjengh/MoeGoe

Cxx OpenJTalk 0.1.0

06 Jan 17:21
5318656
Compare
Choose a tag to compare

Cxx OpenJTalk 0.1.0
解压至cleaner文件夹,在模型配置文件中将Cleaner后字符串改为JapaneseCleaner即可使用
理论上使用C酱的项目训练的模型都可以使用(前提是用JapaneseCleaner的SymbolSize为43)
C酱项目:https://github.com/CjangCjengh/MoeGoe