Browse Source

Python からだとうまくいかなかったので,C でコンパイルした(音声出力)

btc-sounds
Gitea 1 year ago
parent
commit
666d9ca764
3 changed files with 111 additions and 0 deletions
  1. +67
    -0
      AquesTalk2.h
  2. BIN
      aques
  3. +44
    -0
      aques.c

+ 67
- 0
AquesTalk2.h View File

@@ -0,0 +1,67 @@
//////////////////////////////////////////////////////////////////////
/*! @class AquesTalk2
@brief 規則音声合成エンジン AquesTalk2
音声記号列から音声波形データをメモリ上に生成する
出力音声波形は、8HKzサンプリング, 16bit,モノラル,WAVフォーマット
@author N.Yamazaki (Aquest)
@date 2009/11/28 N.Yamazaki Creation (from AuesTalk.h)
*/
// COPYRIGHT (C) 2009 AQUEST CORP.
//////////////////////////////////////////////////////////////////////
#if !defined(_AQUESTALK2_H_)
#define _AQUESTALK2_H_
#ifdef __cplusplus
extern "C"{
#endif
#if defined(AQUESTALK2_EXPORTS)
#undef DllExport
#define DllExport __declspec( dllexport )
#else
#define DllExport
#endif
#if !(defined(WIN32)||defined(WINCE))
#define __stdcall // for Linux etc.
#endif
/////////////////////////////////////////////
//! 音声記号列から音声波形を生成
//! 音声波形データは内部で領域確保される。
//! 音声波形データの解放は本関数の呼び出し側でAquesTalk_FreeWave()にて行う
//! @param koe[in] 音声記号列(SJIS NULL終端)
//! @param iSpeed[in] 発話速度 [%] 50-300 の間で指定 default:100
//! @param pSize[out] 生成した音声データのサイズ[byte](エラーの場合はエラーコードが返る)
//! @param phontDat[in] phontデータの先頭アドレスを指定します。このDLLのデフォルトPhontを用いるときは0を指定します。
//! @return WAVフォーマットの音声データの先頭アドレス。エラー時はNULLが返る
DllExport unsigned char * __stdcall AquesTalk2_Synthe(const char *koe, int iSpeed, int *pSize, void *phontDat);
//! @param koe[in] 音声記号列(EUC NULL終端)
DllExport unsigned char * __stdcall AquesTalk2_Synthe_Euc(const char *koe, int iSpeed, int *pSize, void *phontDat);
//! @param koe[in] 音声記号列(UTF8 NULL終端 BOMはつけられない)
DllExport unsigned char * __stdcall AquesTalk2_Synthe_Utf8(const char *koe, int iSpeed, int *pSize, void *phontDat);
//! @param koe[in] 音声記号列(UTF16 NULL終端 BOMの有無は問わない エンディアンは実行環境に従う)
DllExport unsigned char * __stdcall AquesTalk2_Synthe_Utf16(const unsigned short *koe, int iSpeed, int *pSize, void *phontDat);
//! @param koe[in] 音声記号列(ローマ字表記 NULL終端)
DllExport unsigned char * __stdcall AquesTalk2_Synthe_Roman(const char *koe, int iSpeed, int *pSize, void *phontDat);
/////////////////////////////////////////////
//! 音声データの領域を開放
//! @param wav[in] AquesTalk_Synthe()で返されたアドレスを指定
DllExport void __stdcall AquesTalk2_FreeWave(unsigned char *wav);
#ifdef __cplusplus
}
#endif
#endif // !defined(_AQUESTALK2_H_)
// ----------------------------------------------------------------------
// ! Copyright AQUEST Corp. 2006- . All Rights Reserved. !
// ! An unpublished and CONFIDENTIAL work. Reproduction, adaptation, or !
// ! translation without prior written permission is prohibited except !
// ! as allowed under the copyright laws. !
// ----------------------------------------------------------------------

BIN
aques View File


+ 44
- 0
aques.c View File

@@ -0,0 +1,44 @@
/**********************************************************************
SampleTalk.c - AquesTalk2 Linux 規則音声合成 サンプルプログラム

標準入力から音声記号列を1行読み込み、
標準出力に音声波形(.wavフォーマット)を出力

COPYRIGHT (C) 2010 AQUEST CORP.

使用方法は、readme.txt を参照ください。
2010/01/23 N.Yamazaki Creation
**********************************************************************/
#include <stdio.h>
#include "AquesTalk2.h"


int main(int ac, char **av)
{
int size;
int iret;
char str[1024];

// 音声記号列を入力
if(fgets(str, 1024-1, stdin)==0) return 0;

// 音声合成
// unsigned char *wav = AquesTalk2_Synthe(str, 100, &size, NULL); //SJIS
// unsigned char *wav = AquesTalk2_Synthe_Euc(str, 100, &size, NULL);
unsigned char *wav = AquesTalk2_Synthe_Utf8(str, 100, &size, NULL);
// unsigned char *wav = AquesTalk2_Synthe_Utf16(wstr, 100, &size, NULL); // unsigned short *wstr
// unsigned char *wav = AquesTalk2_Synthe_Roman(str, 100, &size, NULL);
if(wav==0){
fprintf(stderr, "ERR:%d\n",size);
return -1;
}

// 音声データ(wavフォーマット)の出力
fwrite(wav, 1, size, stdout);

// 音声データバッファの開放
AquesTalk2_FreeWave(wav);
return 0;
}

Loading…
Cancel
Save