受到来自electronic.SE的这个问题的启发,这对您来说是一个挑战:
编写一个程序或子程序,该程序或子程序使用一个十进制数字序列(0到9)并大声说出来,而无需使用现有的语音合成工具。
输入:
您可以要求以任何合理的格式提供输入数字,例如,以ASCII数字字符串,整数数组,BCD编码的数字等形式提供。如果您的解决方案是可执行程序,则可以将输入作为命令行参数,从标准输入中读取它,或以任何其他合理的方式获取它。
您的程序每次调用必须至少能说八位数。您可以假设第一个数字不为零,除非它是唯一的数字。
输出:
您的程序可以使用音频设备直接说出数字,也可以输出可播放的声音文件。输出文件(如果有)可以采用任何标准音频格式,也可以包含原始样本数据。如果输出原始样本数据,请注意适当的回放参数(采样率,每个样本的位数,字节序,有符号/无符号,通道数)。aplay支持的格式是首选。
您可以自由决定如何说出数字的细节,但是您的输出应包括以典型英语使用者可以理解的方式说出的英语数字,并且应该足够清晰,以使听者能够准确地转录八位数的随机数字。不,只鸣响n次不算。不要忘记在数字之间包含停顿。
得分:
适用标准的代码高尔夫评分规则:得分是代码的长度(以字节为单位),或者,如果代码是用Unicode文本编写的,则是Unicode字符。最低分获胜。任何语言都可以。
作为关于电子学的最初问题,SE是关于嵌入式编程的,我认为使用低级语言向作者扔骨头是合适的:如果您的解决方案是用编译语言编写的,则可以选择计算语言的长度。已编译的可执行文件(以字节为单位)作为您的分数。(是的,预编译的字节码,例如Java .class
文件也是可以的。)如果您选择使用此选项,请在答案中包括已编译的可执行文件的副本(例如,作为十六进制转储)以及源代码。以及用于生成它的编译器版本和选项。
的荣誉奖,与50代表沿奖金,将被授予第一个答案也能满足该的标准原来的问题,即,能够与闪光灯的4 kb和SRAM的1kb的上的嵌入式微控制器运行。
限制条件:
除非您将上述文件或资源的长度计入分数,否则您不得使用不属于所选语言的标准运行时环境的任何文件或网络资源。(这是不允许的,例如从网络上加载音频样本。)
您也可能不使用任何预先存在的语音合成工具或库或音频数据的汇编(除非您也将它们的大小计为分数的一部分),即使它们已包含在所选语言的标准运行时环境中也是如此。