伊地知ニジカ放送局だぬ゛ん゛. https://www.youtube.com/@deerjika
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

aques.cpp 2.5 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*-------------------------------------------------------------
  2. Kanji2KoeCmd - かな漢字混じりテキストを音声記号列に変換
  3. $ Kanji2KoeCmd (dic_dir) < in.txt > out.koe
  4. ■ビルド(GCC 5.1以上の環境が必要)
  5. $ ln -sf ../lib64/libAqKanji2Koe.so.4.0 ./libAqKanji2Koe.so.4
  6. $ ln -sf ../lib64/libAqKanji2Koe.so.4.0 ./libAqKanji2Koe.so
  7. $ g++ -I./lib64 -o Kanji2KoeCmd Kanji2KoeCmd.cpp -L. -lAqKanji2Koe
  8. ■実行
  9. $ echo 音声合成テスト | LD_LIBRARY_PATH=. ./Kanji2KoeCmd ../aq_dic
  10. ■ライブラリの配置
  11. libAqKanji2Koe.so.X.Xを他のアプリからも呼び出す場合は、
  12. ldconfigコマンドで共有ライブラリに登録する。
  13. 詳しくは、本ライブラリのマニュアルの「ライブラリ配置」を参照
  14. ■辞書の配置(デフォルト)
  15. |- Kanji2KoeCmd
  16. |- aq_dic/ 辞書フォルダ(aq_dic)を同じディレクトリに配置
  17. |- aqdic.bin
  18. |- aq_user.dic (ユーザ辞書:任意)
  19. |- CREDITS
  20. 2011/01/14 N.Yamazaki Creation
  21. 2019/03/05 N.Yamazaki Ver.4用に一部修正
  22. -------------------------------------------------------------*/
  23. #include <stdio.h>
  24. #include <stdlib.h>
  25. #include <string.h>
  26. #include <locale.h> // setlocale()
  27. #include "AqKanji2Koe.h"
  28. #define NSTR 4096
  29. char * GetPathDic(const char *pathModule);
  30. int main(int ac, char **av)
  31. {
  32. int iret;
  33. char kanji[NSTR];
  34. char koe[NSTR];
  35. void *hAqKanji2Koe;
  36. // 開発ライセンスキー(ライセンス証に記載)の設定
  37. // iret = AqKanji2Koe_SetDevKey("XXX-XXX-XXX");
  38. if(ac==1){
  39. char *pPathDic = GetPathDic(av[0]);
  40. hAqKanji2Koe = AqKanji2Koe_Create(pPathDic, &iret);
  41. free(pPathDic);
  42. }
  43. else {
  44. hAqKanji2Koe = AqKanji2Koe_Create(av[1], &iret);
  45. }
  46. if(hAqKanji2Koe==0){
  47. fprintf(stderr, "ERR: can not initialize Dictionary(%d)\n", iret);
  48. fprintf(stderr, "USAGE: $ Kanji2KoeCmd (dic_dir) < in.txt > out.koe\n");
  49. return iret;
  50. }
  51. int i;
  52. for(i=0; ; i++){
  53. if(fgets(kanji, NSTR, stdin)==0) break;
  54. iret = AqKanji2Koe_Convert(hAqKanji2Koe, kanji, koe, NSTR);
  55. if(iret!=0) {
  56. fprintf(stderr, "ERR: AqKanji2Koe_Convert()=%d\n", iret);
  57. break;
  58. }
  59. fprintf(stdout, "%s\n", koe);
  60. }
  61. AqKanji2Koe_Release(hAqKanji2Koe);
  62. return 0;
  63. }
  64. char * GetPathDic(const char *pathModule)
  65. {
  66. char *p = strrchr((char*)pathModule, '/');
  67. if(p==NULL){
  68. return strdup("./aq_dic");
  69. }
  70. char *path = (char*)malloc(strlen(pathModule)+strlen("/aq_dic")+1);
  71. strncpy(path, pathModule, p-pathModule);
  72. strcpy(path+(p-pathModule), "/aq_dic");
  73. return path;
  74. }