質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

990閲覧

OpenJtalk(jtalkdll)が実行できない

musicexbp

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/11/14 13:51

###前提・実現したいこと
javaで音声応答システムを作っています
本当は、Raspberry Piでうごかす予定でしたが、故障してしまい、windowsで動かす事になりました
OpenJtalkという音声合成ソフトを使いますが、windowsの場合ソースからビルドが必要だそうで、ビルド済みがないか探したところ、
有志のかたがビルド済みでJavaライブラリもあるビルドを発見しました。
しかし、使い方がわからず、コード例を入れても,音声が再生されません。
ライブラリにはJtalkJNAや、sunJNIを入れています
有志の方のもの
https://github.com/rosmarinus/jtalkdll/blob/master/ffi/vb/jtd_vb.vb
有志の方のサイト
http://neu101.seesaa.net/article/454844603.html
ファイル構成:プロジェクトファイル直下にopenJtalkビルド済みのファイル一式と、master-dllから抜き取ったffiが入っています
###発生している問題・エラーメッセージ

java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: JTalkJna

###該当のソースコード

java

1import java.util.ArrayList; 2import java.util.Random; 3 4public class PRINT { 5 6 final private static PRINT print = new PRINT(); 7 private String msg; 8 private static final String OS_NAME = System.getProperty("os.name").toLowerCase(); 9 10 private PRINT() { 11 } 12 13 public static PRINT getInstance() { 14 return print; 15 } 16 17 public void printf(String msg) { 18 this.msg = msg; 19 if (OS_NAME.startsWith("windows")) { 20 try { 21 JTalkJna a=new JTalkJna(); 22 a.setVoiceName("mei_happy"); 23 a.speakAsync(msg); 24 while(a.isSpeaking()); 25 } catch (Exception e) { 26 // TODO 自動生成された catch ブロック 27 e.printStackTrace(); 28 } 29 30 31 } 32 } 33 34 35 36}

###試したこと
コード例をそのまま移した。
###補足情報(言語/FW/ツール等のバージョンなど)
netbeans 8.20,win10,

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

めずらしいエラーだなぁと思って調べてみたところ

https://stackoverflow.com/questions/2333285/java-lang-runtimeexception-uncompilable-source-code-what-can-cause-this

を見つけました。

If it is Netbeans, try to uncheck "Compile on save" setting in the project properties (Build -> Compiling). This is the only thing which helped me in a similar situation.

Source: http://forums.netbeans.org/post-45324.html

要するに「エラー付きのソースがあってもそのまま実行してしまう」というNetBeansの問題のように見えました。本件がこれだけで解決するとは思えませんが、とりあえず上の対処を試してみてはいかがでしょう?


追記:上記は本件の解決には寄与しませんでした。
試しに実際にやってみましところ動いたので情報を追記してみます。

OS: Windows 10

IDE: IntelliJ IDEA 2017.3 (x64)
JDK: jdk1.8.0_152 (x64)

JNA: jna-4.5.0 (x64)
(以前DL済みのものをそのまま利用。IntelliJではjarの場所、javadoc, sourceなどをプロジェクトのライブラリーとして登録できるのでそれでやりました。大抵のIDEで外部jarをプロジェクトへ追加する方法があるのでそれに従えばよいと思います)

jtalk: 質問者さんのURLから辿ったreleaseページからx64用バイナリーを使ってます。

中身を解凍し、指示どおりの場所C:\open_jtalkに置きました。
なお、jnaがこのDLLをロードできるようにするにはいくつか方法がありますが環境変数を汚したくなかったため、自分はプログラム開始時のJVMオプションに指定する方法としました。javaコマンドを起動する場合の指定は
java -Djna.library.path=C:\open_jtalk\bin ...
となりますが、この-Djna.library.path=C:\open_jtalk\binをJVMオプションとしてIDEに設定しました。

JTalkJna.java: https://github.com/rosmarinus/jtalkdll/blob/master/ffi/java/JTalkJna.java
=>プロジェクト内に直接ソースを置きました。

サンプル用のメインソース
https://github.com/rosmarinus/jtalkdll/blob/master/ffi/java/JtdJnaJava.java
自分は上記を使いました。

投稿2017/11/14 14:05

編集2017/11/14 15:35
KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

musicexbp

2017/11/14 14:08

試しましたが、同じでした。。。
KSwordOfHaste

2017/11/14 14:10

コンパイルはできたけど実行時エラーになってしまうということですね。うーん、申し訳ない。
musicexbp

2017/11/14 14:12

とんでもありません、ありがとうございます
musicexbp

2017/11/15 08:38

ありがとうございます。 これで文化祭に展示できます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問