Releases: NaruseMioShirakana/TextCleaner
Releases · NaruseMioShirakana/TextCleaner
Cleaners 0.8.0
Add files via upload
Japanese G2p & Cleaner 0.7.0
Add files via upload
Japanese G2p & Cleaner 0.6.0
Japanese G2p & Cleaner 0.5.0
为了适配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
// 如果想使用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
// 使用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
Cxx OpenJTalk 0.2.0
解压至cleaner文件夹,在模型配置文件中将Cleaner后字符串改为JapaneseCleaner即可使用
理论上使用C酱的项目训练的模型都可以使用(前提是用JapaneseCleaner的SymbolSize为43)
C酱项目:https://github.com/CjangCjengh/MoeGoe
Cxx OpenJTalk 0.1.0
Cxx OpenJTalk 0.1.0
解压至cleaner文件夹,在模型配置文件中将Cleaner后字符串改为JapaneseCleaner即可使用
理论上使用C酱的项目训练的模型都可以使用(前提是用JapaneseCleaner的SymbolSize为43)
C酱项目:https://github.com/CjangCjengh/MoeGoe