{"id":17689788,"url":"https://github.com/taku-o/aquestalk-mac","last_synced_at":"2025-07-22T10:06:47.737Z","repository":{"id":57183046,"uuid":"185698607","full_name":"taku-o/aquestalk-mac","owner":"taku-o","description":"AquesTalk javascript library for Mac.","archived":false,"fork":false,"pushed_at":"2019-05-13T08:38:08.000Z","size":244,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-14T20:34:56.055Z","etag":null,"topics":["aquestalk","audio","javascript","mac","macos","wav"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/aquestalk-mac","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taku-o.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-09T00:35:14.000Z","updated_at":"2023-02-14T05:35:19.000Z","dependencies_parsed_at":"2022-09-14T06:11:00.539Z","dependency_job_id":null,"html_url":"https://github.com/taku-o/aquestalk-mac","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/taku-o/aquestalk-mac","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taku-o%2Faquestalk-mac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taku-o%2Faquestalk-mac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taku-o%2Faquestalk-mac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taku-o%2Faquestalk-mac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taku-o","download_url":"https://codeload.github.com/taku-o/aquestalk-mac/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taku-o%2Faquestalk-mac/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266473051,"owners_count":23934476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aquestalk","audio","javascript","mac","macos","wav"],"created_at":"2024-10-24T11:48:53.331Z","updated_at":"2025-07-22T10:06:47.700Z","avatar_url":"https://github.com/taku-o.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aquestalk-mac\n\n## description\nAquesTalk javascript library for Mac.\n\nAquesTalkライブラリをJavaScriptから実行できるようにするMac環境用のライブラリです。  \n実行するにはMac環境用のAquesTalkのライブラリが必要となります。\n\n## install\n\n```sh\nnpm install --save aquestalk-mac\n```\n\n## Q \u0026 A\n### Q. npm moduleの他に何が必要か？\n- 必要な機能に対応するAquesTalkのライブラリと、その動作に必要なファイル群が必要。\n- 最小構成として、読み上げアプリを作ると仮定した場合、\n    - AqKanji2Koe で\"音声記号列\"に変換する\n    - AquesTalk2、もしくは AquesTalk10 のどちらかで音声ファイルを作成する\n        - ことになる。\n\n### Q. AquesTalkライブラリはどこから入手できるか？\n- 株式会社アクエストのサイトからダウンロードするか\n- 株式会社アクエストのオンラインストアでライセンス購入時についてくる\n\n### Q. AquesTalkのライセンスはどこから入手できるか？\n- 株式会社アクエストのオンラインストアで購入する。\n\n### Q. このライブラリは、AquesTalkの評価版でも動作するか？\n- 動作する。\n\n### Q. このライブラリを使ったアプリはあるか？\n- サンプルアプリ https://github.com/taku-o/aquestalk-player-mac\n- 移植元のコードを [MYukkuriVoice](https://taku-o.github.io/myukkurivoice/) というアプリで使用している。\n\n### Q. AquesTalk1のライブラリはサポートしていない？\n- まだサポートしていない。\n- しかし、サポートする前に、MacでAquesTalk1が動作しなくなる見込み。\n\n### Q. ファイルアクセスが必要？\n- Q. このライブラリを使用するにはファイルアクセスが必要？\n    - A. 必要\n- Q. つまり、Webブラウザでは動作しない？\n    - A. 基本的には動作しない\n- Q. 音声をJavaScriptで再生するには、Web Audio APIか、HTML5 Audioクラスあたりが妥当？\n    - A. 他のプログラムに作成した音声データを渡さないなら妥当\n- Q. Web Audio APIは、Webブラウザで動作しますよね？\n    - A. ･･･そうですね\n- Q. このライブラリはどういう場面で使えるの？\n    - A. ･･･え、Electronとか･･･\n\n### Q. npm install時にビルドエラー発生\n- Pythonの環境がおかしいかも？\n- system組み込みのpythonを指定すれば、たいていビルドは成功する。\n\n### Q. Electronに組み込んだら動作しなかった\n- was compiled against a different Node.js version using NODE_MODULE_VERSION 64. This version of Node.js requires NODE_MODULE_VERSION 69. Please try re-compiling or re-installing the module\n- Module version mismatch. Expected 50, got 51.\n    - この種のエラーメッセージが出ているなら、electron-rebuildでビルドし直す。\n\n```\nnpm install --save-dev electron\nnpm install --save-dev electron-rebuild\n./node_modules/.bin/electron-rebuild\n```\n\n### Q. サンプルコードやテストで参照しているvendorには何が置いてある？\n\n```\n|-- vendor\n    |-- AqKanji2Koe.framework\n    |-- AqUsrDic.framework\n    |-- AquesTalk10.framework\n    |-- AquesTalk2.framework\n    |-- aq_dic_large\n    `-- phont\n```\n\n## Sample App\n- サンプルアプリ https://github.com/taku-o/aquestalk-player-mac\n\n## Sample Code\n### AqKanji2Koe\n\"日本語文字列\"をAquesTalkで利用可能な\"音声記号列\"に変換します。\n\n- 開発、および利用には次のものが必要です。\n    - AqKanji2Koeライブラリ\n    - AquesTalkユーザー辞書ファイル (AqKanji2Koeライブラリに同梱)\n    - AqKanji2Koe開発ライセンス\n    - AqKanji2Koe開発ライセンスキー (未設定でも動作するが制限がかかる)\n    - AqKanji2Koe使用ライセンス (使用するなら)\n\n```javascript\nimport {AqKanji2Koe} from 'aquestalk';\nimport * as from 'path';\n\nvar frameworkPath = path.join(__dirname, '../vendor/AqKanji2Koe.framework/Versions/A/AqKanji2Koe');\nvar aqDictPath = path.join(__dirname, '../vendor/aq_dic_large');\nvar devKey = 'xxx-xxx-xxx-xxx';\n\nvar aqKanji2Koe = new AqKanji2Koe(frameworkPath, aqDictPath);\n//aqKanji2Koe.setDevKey(devKey);\n\n// test =\u003e テ'スト\nvar kanji = 'test';\nvar encoded = aqKanji2Koe.convert(kanji);\nconsole.log(encoded);\n```\n\n### AquesTalk2\nAquesTalk2で\"音声記号列\"を音声データに変換します。  \n音声記号列はAqKanji2Koeで作成します。\n\n- 開発、および利用には次のものが必要です。\n    - AquesTalk2ライブラリ\n    - 音声定義phontファイル (AquesTalk2ライブラリに同梱)\n    - AquesTalk2開発ライセンス\n    - AquesTalk2使用ライセンス (使用するなら)\n\n```javascript\nimport {AquesTalk2} from 'aquestalk';\nimport * as path from 'path';\n\nvar frameworkPath = path.join(__dirname, '../vendor/AquesTalk2.framework/Versions/A/AquesTalk2');\nvar phontPath = path.join(__dirname, '../vendor/phont/aq_f1c.phont');\n\nconst aquesTalk2 = new AquesTalk2(frameworkPath);\nconst encoded = \"テ'_スト\";\nconst speed = 100;\naquesTalk2.wave(encoded, phontPath, speed).then((buffer) =\u003e {\n  // TODO\n  // use buffer\n});\n```\n\n### AquesTalk10\nAquesTalk10で\"音声記号列\"を音声データに変換します。  \n音声記号列はAqKanji2Koeで作成します。\n\n使用ライセンスキー(usrKey)は開発者所有のキーを設定するのではなく、  \nアプリの利用者に入力、設定させる項目になります。\n\n- 開発、および利用には次のものが必要です。\n    - AquesTalk10ライブラリ\n    - AquesTalk10開発ライセンス\n    - AquesTalk10開発ライセンスキー (未設定でも動作するが制限がかかる)\n    - AquesTalk10使用ライセンス (使用するなら)\n\n```javascript\nimport {AquesTalk10} from 'aquestalk';\nimport * as path from 'path';\n\nvar frameworkPath = path.join(__dirname, '../vendor/AquesTalk10.framework/Versions/A/AquesTalk');\nvar devKey = 'xxx-xxx-xxx-xxx';\nvar usrKey = 'xxx-xxx-xxx-xxx';\n\nvar aquesTalk10 = new AquesTalk10(frameworkPath);\n//aquesTalk10.setDevKey(devKey);\n//aquesTalk10.setUsrKey(usrKey);\n\nvar encoded = \"テ'_スト\";\nvar options = {bas: 0, spd: 100, vol: 100, pit: 100, acc: 100, lmd: 100, fsc: 100};\n\naquesTalk10.wave(encoded, options).then((buffer) =\u003e {\n  // TODO\n  // use buffer\n});\n```\n\n##### 音声の定義\nAquesTalk10用の音声定義の基本セットは次の通りです。  \naq10VoiceList()を呼び出しても取得できます。\n\n```javascript\nimport {aq10VoiceList} from '../aquestalk';\nconsole.log(aq10VoiceList());\n\n[\n  {id: 'aq10_F1', name: 'F1 女声1(新ゆっくり)', bas: 0, spd: 100, vol: 100, pit: 100, acc: 100, lmd: 100, fsc: 100},\n  {id: 'aq10_F2', name: 'F2 女声2', bas: 1, spd: 100, vol: 100, pit: 77, acc: 150, lmd: 100, fsc: 100},\n  {id: 'aq10_F3', name: 'F3 女声3', bas: 0, spd: 80, vol: 100, pit: 100, acc: 100, lmd: 61, fsc: 148},\n  {id: 'aq10_M1', name: 'M1 男声1', bas: 2, spd: 100, vol: 100, pit: 30, acc: 100, lmd: 100, fsc: 100},\n  {id: 'aq10_M2', name: 'M2 男声2', bas: 2, spd: 105, vol: 100, pit: 45, acc: 130, lmd: 120, fsc: 100},\n  {id: 'aq10_R1', name: 'R1 ロボット1', bas: 2, spd: 100, vol: 100, pit: 30, acc: 20, lmd: 190, fsc: 100},\n  {id: 'aq10_R2', name: 'R2 ロボット2', bas: 1, spd: 70, vol: 100, pit: 50, acc: 50, lmd: 50, fsc: 180},\n]\n```\n\n### AqUsrDic\nユーザー辞書を操作します。  \n作成したユーザー辞書はAqKanji2Koeで利用できます。\n\n- 開発、および利用には次のものが必要です。\n    - AqUsrDicライブラリ (AqKanji2Koeライブラリに同梱)\n    - AquesTalkユーザー辞書ファイル (AqKanji2Koeライブラリに同梱)\n    - AqKanji2Koe開発ライセンス\n    - AqKanji2Koe使用ライセンス (使用するなら)\n\n#### generateUserDict\nCSVファイルからユーザー辞書ファイルを生成します。\n\n```javascript\nimport {AqUsrDic} from 'aquestalk';\nvar path = require('path');\n\nvar frameworkPath = path.join(__dirname, '../vendor/AqUsrDic.framework/Versions/A/AqUsrDic');\nvar csvTemplate = path.join(__dirname, '../vendor/aq_dic_large/aq_user.csv');\nvar resultDir = path.join(__dirname, '../vendor/aq_dic_large');\n\n// generateUserDict\nvar aqUsrDic = new AqUsrDic(frameworkPath);\nvar r = aqUsrDic.generateUserDict(csvTemplate, `${resultDir}/aq_user.dic`);\n```\n\n#### generateCSV\nユーザー辞書ファイルからCSVファイルを生成します。\n\n```javascript\nimport {AqUsrDic} from 'aquestalk';\nvar path = require('path');\n\nvar frameworkPath = path.join(__dirname, '../vendor/AqUsrDic.framework/Versions/A/AqUsrDic');\nvar usrDictTemplate = path.join(__dirname, '../vendor/aq_dic_large/aq_user.dic');\nvar resultDir = path.join(__dirname, '../vendor/aq_dic_large');\n\n// generateCSV\nvar aqUsrDic = new AqUsrDic(frameworkPath);\nvar r = aqUsrDic.generateCSV(usrDictTemplate, `${resultDir}/aq_user.csv`);\n```\n\n#### validateInput\nユーザー辞書の定義が正しいか、入力チェックします。\n\n```javascript\nimport {AqUsrDic} from '../aquestalk';\nvar path = require('path');\nimport * as fs from 'fs';\n\nvar frameworkPath = path.join(__dirname, '../vendor/AqUsrDic.framework/Versions/A/AqUsrDic');\n\n// validateInput\nvar aqUsrDic = new AqUsrDic(frameworkPath);\nvar surface = '大江戸線';\nvar yomi = 'オーエドセン';\nvar posCode = 5;\nvar r = aqUsrDic.validateInput(surface, yomi, posCode);\n```\n\n##### posCode\nAqUsrDicライブラリで使用するposCodeの定義は次の通りです。  \nposCodeList()を呼び出しても取得できます。\n\n```javascript\nimport {posCodeList} from '../aquestalk';\nconsole.log(posCodeList());\n\n[ { posCode: 0, kind: '名詞' },\n  { posCode: 1, kind: '名詞(サ変)' },\n  { posCode: 2, kind: '人名' },\n  { posCode: 3, kind: '人名(姓)' },\n  { posCode: 4, kind: '人名(名)' },\n  { posCode: 5, kind: '固有名詞' },\n  { posCode: 6, kind: '固有名詞(組織)' },\n  { posCode: 7, kind: '固有名詞(地域)' },\n  { posCode: 8, kind: '固有名詞(国)' },\n  { posCode: 9, kind: '代名詞' },\n  { posCode: 10, kind: '代名詞(縮約)' },\n  { posCode: 11, kind: '名詞(副詞可能)' },\n  { posCode: 12, kind: '名詞(接続詞的)' },\n  { posCode: 13, kind: '名詞(形容動詞語幹)' },\n  { posCode: 14, kind: '名詞(ナイ形容詞語幹)' },\n  { posCode: 15, kind: '形容詞' },\n  { posCode: 16, kind: '副詞' },\n  { posCode: 17, kind: '副詞(助詞類接続)' },\n  { posCode: 18, kind: '接頭詞(名詞接続)' },\n  { posCode: 19, kind: '接頭詞(動詞接続)' },\n  { posCode: 20, kind: '接頭詞(数接続)' },\n  { posCode: 21, kind: '接頭詞(形容詞接続)' },\n  { posCode: 22, kind: '接続詞' },\n  { posCode: 23, kind: '連体詞' },\n  { posCode: 24, kind: '記号' },\n  { posCode: 25, kind: '記号(アルファベット)' },\n  { posCode: 26, kind: '感動詞' },\n  { posCode: 27, kind: '間投詞' } ]\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaku-o%2Faquestalk-mac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaku-o%2Faquestalk-mac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaku-o%2Faquestalk-mac/lists"}