编译 Festival/Edinburgh Speech 工具 Visual Studio 2013

Posted

技术标签:

【中文标题】编译 Festival/Edinburgh Speech 工具 Visual Studio 2013【英文标题】:Compile Festival/Edinburgh Speech tools Visual Studio 2013 【发布时间】:2014-10-28 20:16:30 【问题描述】:

Directions I found to compile

我已尝试使用 Visual Studio 2013 使用 Visual Studio 2013 从 Festvox latest 编译 Festival(自 2010 年以来没有更新)的说明来编译语音工具

nmake /nologo /FVCMakefile > output.txt

slib_doc.cc
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(423) : error C2988: unrecognizable template declaration/definition
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(423) : error C2059: syntax error : 'constant'
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(429) : error C2143: syntax error : missing ';' before ''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(429) : error C2447: '' : missing function header (old-style formal list?)
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2039: 'isnan' : is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2873: 'isnan' : symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2039: 'isnormal' : is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2873: 'isnormal' : symbol cannot be used in a using-declaration

尝试编译Festival

nmake /nologo /FVCMakefile > output.txt
festival.cc
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(423) : error C2988: unrecognizable template declaration/definition
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(423) : error C2059: syntax error : 'constant'
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(429) : error C2143: syntax error : missing ';' before ''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(429) : error C2447: '' : missing function header (old-style formal list?)
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2039: 'isnan' : is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2873: 'isnan' : symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2039: 'isnormal' : is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2873: 'isnormal' : symbol cannot be used in a using-declaration

我也尝试编译我在 Github 上找到的这个版本的语音工具。Github repo with speech tools 我收到很多错误,例如

speech-tools\include\EST_String.h(156) : error C2061: syntax error : identifier 'ssize_t'

我认为这应该在 Speech-tools\include\EST_system.h 中处理

#   if defined(_MSC_VER)
#       include <BaseTsd.h>
        typedef SSIZE_T ssize_t;
#   endif

我能够通过将它们替换为 size_t 来绕过 ssize_t 问题,这可能会在以后成为一个问题。

最终出现与上述类似的错误。

nmake /nologo /FVCMakefile > output.txt
slib_format.cc

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(423) : error C2988:     unrecognizable template declaration/definition
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(423) : error C2059: syntax error : 'constant'
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(429) : error C2143: syntax error : missing ';' before ''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(429) : error C2447: '' : missing function header (old-style formal list?)
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2039: 'isnan' : is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2873: 'isnan' : symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2039: 'isnormal' : is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\cmath(96) : error C2873: 'isnormal' : symbol cannot be used in a using-declaration

(在编写所有这些内容时,我意识到所有编译它的尝试似乎都遇到了 math.h 和 cmath.h 的类似问题,但似乎来自不同的地方)

【问题讨论】:

slib_format.cc、festival.cc 和 slib_doc.cc 是似乎引发 math.h 和 cmath.h 问题的三个文件。 我想我将不得不使用其他东西,因为我也无法使用 Ubuntu 编译它。 ssize_t 是一个有符号类型,类似于 size_t 是无符号的。通常,获得正确的标志比尺寸更重要,因此long long 通常可能是更好的替代品。 ssize_t 的直接 Windows 等效项是 INT_PTR,它具有正确的符号和大小。 【参考方案1】:

您可以下载Festival的新版本(2.4):http://www.cstr.ed.ac.uk/projects/festival/download.html

另外,要使用 VS 2013 构建它,请尝试在 Speech_tools 的 EST_defines_win32.h 中更改此行

#define isnan(N) 0

#if (_MSC_VER < 1800 ) // older than VS 2013
#define isnan(N) 0 
#endif

【讨论】:

【参考方案2】:

您没有按照说明中显示的步骤操作,这就是它不适合您的原因。

说明清楚地说明使用 cygwin 获取 GNU make 的副本,或使用 VS2005。它确实说 2006 年(以及之后的那些)不起作用....

为什么不直接按照 cygwin 路径编译呢?

【讨论】:

我有一个真正的 Windows 应用程序,我需要将它编译成这就是为什么我不能使用 Cygwin。我没有 VS 2005。 cygwin 不会阻止您使用真正的 Windows 应用程序。它使您能够使用 linux 兼容环境来构建将在 windows 下运行的东西。也看看mingw。

以上是关于编译 Festival/Edinburgh Speech 工具 Visual Studio 2013的主要内容,如果未能解决你的问题,请参考以下文章

华为运营商级路由器配置示例 | 配置动态VPWS接入VPLS示例

流处理引擎(SPE)中的的分布式一致性语义之Exactly-Once和Effectively-Onece区别

更新 CocoaPods 后找不到 headers

华为运营商级路由器配置示例 | L3VdPdNdv4 HoVdPdNd over MPLS拼接SRv6 TE Policy

Hive之count函数的特别用法

centos7中如何打包用户目录